developer tip

자바 스크립트 사전에서 키 컬렉션을 얻는 방법은 무엇입니까?

copycodes 2020. 9. 23. 07:43
반응형

자바 스크립트 사전에서 키 컬렉션을 얻는 방법은 무엇입니까? [복제]


이 질문에 이미 답변이 있습니다.

사전이 있습니다.

var driversCounter = {
 "one": 1, 
 "two": 2, 
 "three": 3, 
 "four": 4, 
 "five": 5
}

이제 드롭 다운 목록에 표시해야합니다. 내 사전에서 키 컬렉션을 가져 오는 방법은 무엇입니까?


이전 브라우저에서 사용 Object.keys()하거나 shim ...

const keys = Object.keys(driversCounter);

당신이 원하는 경우 값을 , 거기 Object.values()당신이 키하려는 경우 가치, 당신이 사용할 수있는 Object.entries()자주와 결합, Array.prototype.forEach()이 같은 ...

Object.entries(driversCounter).forEach(([key, value]) => {
   console.log(key, value);
});

또는 사용 사례를 고려할 때 아마도 이것이 가능할 것입니다 ...

var selectBox, option, prop;

selectBox = document.getElementById("drivers");

for (prop in driversCounter) {
   option = document.createElement("option");
   option.textContent = prop;
   option.value = driversCounter[prop];
   selectBox.add(option);
}

한 가지 옵션은 다음을 사용하는 것입니다 Object.keys().

Object.keys(driversCounter)

최신 브라우저에서는 잘 작동합니다 (그러나 IE는 버전 9부터 지원합니다).

호환되는 지원을 추가하려면 MDN에 제공된 코드 조각을 복사 할 수 있습니다 .


"사전"(JS에서는 객체라고 부름)을 for in반복 하려면 루프를 사용합니다 .

for(var key in driversCounter) {
    if(driversCounter.hasOwnProperty(key)) {
        //key                 = keys,  left of the ":"
        //driversCounter[key] = value, right of the ":"
    }
}

이것은 모든 JavaScript 구현에서 작동합니다.

var keys = [];

for (var key in driversCounter) {
    if (driversCounter.hasOwnProperty(key)) {
        keys.push(key);
    }
}

이전에 언급 한 다른 사용자와 마찬가지로를 사용할 수 Object.keys있지만 이전 엔진에서는 작동하지 않을 수 있습니다. 따라서 다음 원숭이 패치를 사용할 수 있습니다.

if (!Object.keys) {
    Object.keys = function (object) {
        var keys = [];

        for (var key in object) {
            if (object.hasOwnProperty(key)) {
                keys.push(key);
            }
        }
    }
}

사용하다 Object.Keys()

var driversCounter = {
                      "one": 1,
                      "two": 2,
                      "three": 3,
                      "four": 4,
                      "five": 5
                     }
console.log(Object.keys(driversCounter));


최신 JS 엔진으로 다음을 사용할 수 있습니다. Object.keys(driversCounter)


새 브라우저의 경우 : Object.keys( MY_DICTIONARY )키 배열을 반환합니다. 그렇지 않으면 구식 방식으로 가고 싶을 수 있습니다.

var keys = []
for(var key in dic) keys.push( key );

다른 사람들이 말했듯 이을 사용할 Object.keys()있지만 누가 이전 브라우저를 신경 쓰나요?

글쎄요.

Try this. array_keys from PHPJS ports PHP's handy array_keys function so it can be used in JS. At a glance, it uses Object.keys if supported, but handles the case where it isn't very easily. It even includes filtering the keys based on values you might be looking for (optional) and a toggle for whether or not to use strict comparison === versus typecasting comparison == (optional)


if you can use JQuery then

var keys = []; 
$.each(driversCounter, function(key, value) { 
    keys.push(key); 
}); 

console.log(JSON.stringify(keys));

here follows the answer:

["one","two","three","four","five"]

and this way you wouldn't have to worry if the browser supports Object.keys method or not.


A different approach would be to using multi-dimensional arrays:

var driversCounter = [
    ["one", 1], 
    ["two", 2], 
    ["three", 3], 
    ["four", 4], 
    ["five", 5]
]

and access the value by driverCounter[k][j], where j=0,1 in the case.
Add it in a drop down list by:

var dd = document.getElementById('your_dropdown_element');
for(i=0;i<driversCounter.length-1;i++)
{
    dd.options.add(opt);
    opt.text = driversCounter[i][0];
    opt.value = driversCounter[i][1];
}

참고URL : https://stackoverflow.com/questions/10654992/how-to-get-collection-of-keys-in-javascript-dictionary

반응형