자바에서 hash table이 필요합니다. 즉, 키 (문자열)를 값에 매핑하는 연관 배열을 구현해야합니다 (제 경우에는 정수 배열입니다). 나는 이런 종류의 접근법은 일반적으로 사용되지 않는 것을 깨달았다, 또는 적어도 아직 웹에 그것을 발견되지 않은 :Javascript에서 해시 테이블 사용 : 적절한 배열 배열입니까?
var hash = ['s0'];
for (var i = 5; i >= 1; i--) {
var r = Math.floor(Math.random() * 3);
hash['s'+i] = [r, r*2, r^2];
}
console.log(hash);
hash.forEach(function (v, i, a) {
document.getElementById('foreach').innerHTML += i + ' => ' + v + '<br>';
})
for (var i = 5; i >= 1; i--) {
var key = 's'+i;
document.getElementById('for').innerHTML += key + ' => [' + hash[key].toString() + ']<br>';
}
<p id="foreach">forEach (val,index):<br/></p>
<p id="for">for:<br/></p>
가 선언 된 배열에 보인다 (콘솔을 열고 +
버튼을 클릭하면, [s1]
을 표시하더라도 값이 표시됨을 알 수 있습니다). forEach
은 배열에 하나의 값만 있다고 가정하고 있지만 해당 키 중 하나에 직접 액세스하면 hash['s3']
의 경우 각 배열이 반환됩니다.
따라서 내가 잘못하고 있습니까? 이 접근법을 사용해야할까요?
JSON에서 개체가이 경우에 더 적합한 경우, 위의 예에 간단하고 비슷한을 구현하는 가장 좋은 방법은 무엇입니까?
또한 key_string
이 "정식 매개 변수"가 아니기 때문에 hash.push(key_string: val_array)
키가 원하는 문자열 인 경우 hash.push(key_string: val_array)
이 실패합니다. 그러나 뭔가를 수행하여
hash.push({'key':key_string,'value':val_array})
어떻게 그 배열 중 하나가 관련 키를 통해 가능한 한 가장 간단한 방법으로 액세스 할 수 있습니까?
, javascript에서 해시 테이블을 구현하는 것은 해결하려는 문제를 해결하는 잘못된 방법이거나 숙제 문제입니다. – chiliNUT
var hash = [ 's0']을 var hash = { 's0': 'first_element'}로 변경하십시오. 무엇을하는지보십시오. –
감사합니다 @chiliNUT,하지만 객체 속성이 "해시 테이블과 거의 동일하게 작동"하고 "숙제 문제"로 "사소한 질문"이라고 말하면 간단한 대안을 제공 할 수 있습니까? 해시 테이블 문제? 위 코드와 비슷한 코드를 사용하고 있는데, 제 목적을 위해 작동하지만'forEach'를 사용할 수없는 것은 편리하지 않습니다 ... – CPHPython