[javascript] JavaScript에서 연관 배열 / 해싱을 수행하는 방법
C #에서와 같이 JavaScript를 사용하여 일부 통계를 저장해야합니다.
Dictionary<string, int> statistics;
statistics["Foo"] = 10;
statistics["Goo"] = statistics["Goo"] + 1;
statistics.Add("Zoo", 1);
이 생길인가 Hashtable
또는 뭔가처럼 Dictionary<TKey, TValue>
자바 스크립트?
어떻게 그런 식으로 값을 저장할 수 있습니까?
답변
JavaScript 객체를 연관 배열로 사용하십시오 .
연관 배열 : 간단히 말해서 연관 배열은 정수 대신 정수를 인덱스로 사용합니다.
로 객체 만들기
var dictionary = {};
Javascript를 사용하면 다음 구문을 사용하여 객체에 속성을 추가 할 수 있습니다.
Object.yourProperty = value;
동일한 대체 구문은 다음과 같습니다.
Object["yourProperty"] = value;
다음 구문을 사용하여 키-값 객체 맵을 만들 수도있는 경우
var point = { x:3, y:2 };
point["x"] // returns 3
point.y // returns 2
다음과 같이 for..in 루프 구문을 사용하여 연관 배열을 반복 할 수 있습니다.
for(var key in Object.keys(dict)){
var value = dict[key];
/* use key/value for intended purpose */
}
답변
var associativeArray = {};
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
객체 지향 언어에서 오는 경우이 기사를 확인해야합니다 .
답변
모든 최신 브라우저는 자바 스크립트 맵 객체를 지원 합니다. Object를 사용하는 것보다 Map을 더 잘 사용하는 데에는 몇 가지 이유가 있습니다.
- 객체에는 프로토 타입이 있으므로 맵에 기본 키가 있습니다.
- 객체의 키는 문자열이며지도의 값이 될 수 있습니다.
- 객체의 크기를 추적해야하는 동안 맵의 크기를 쉽게 얻을 수 있습니다.
예:
var myMap = new Map();
var keyObj = {},
keyFunc = function () {},
keyString = "a string";
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");
myMap.size; // 3
myMap.get(keyString); // "value associated with 'a string'"
myMap.get(keyObj); // "value associated with keyObj"
myMap.get(keyFunc); // "value associated with keyFunc"
다른 객체에서 참조되지 않은 키를 가비지 수집하려면 맵 대신 WeakMap을 사용하십시오 .
답변
특별한 이유가없는 한, 일반 객체 만 사용하십시오. Javascript의 객체 속성은 해시 테이블 스타일 구문을 사용하여 참조 할 수 있습니다.
var hashtable = {};
hashtable.foo = "bar";
hashtable['bar'] = "foo";
그러면 요소 foo
와 bar
요소를 모두 다음과 같이 참조 할 수 있습니다.
hashtable['foo'];
hashtable['bar'];
// or
hashtable.foo;
hashtable.bar;
물론 이것은 키가 문자열이어야 함을 의미합니다. 문자열이 아닌 경우 내부적으로 문자열로 변환되므로 여전히 작동합니다 (YMMV).
답변
JS의 모든 객체는 해시 테이블처럼 동작하며 일반적으로 해시 테이블로 구현되기 때문에 그와 함께합니다.
var hashSweetHashTable = {};
답변
C #에서 코드는 다음과 같습니다.
Dictionary<string,int> dictionary = new Dictionary<string,int>();
dictionary.add("sample1", 1);
dictionary.add("sample2", 2);
또는
var dictionary = new Dictionary<string, int> {
{"sample1", 1},
{"sample2", 2}
};
JavaScript로
var dictionary = {
"sample1": 1,
"sample2": 2
}
C #을 사전 개체는 같은 유용한 방법이 포함되어 dictionary.ContainsKey()
자바 스크립트에서 우리가 사용할 수 hasOwnProperty
처럼를
if (dictionary.hasOwnProperty("sample1"))
console.log("sample1 key found and its value is"+ dictionary["sample1"]);