Подтвердить что ты не робот

Как получить набор ключей в словаре javascript?

У меня есть словарь:

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

Теперь мне нужно показать его в раскрывающемся списке. Как получить набор ключей в моем словаре?

4b9b3361

Ответ 1

Используйте Object.keys() или Призонную шайбу его в старых браузерах...

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);
}

Ответ 2

Один из вариантов использует Object.keys():

Object.keys(driversCounter)

Он отлично работает для современных браузеров (однако IE поддерживает его, начиная с версии 9).

Чтобы добавить совместимую поддержку, вы можете скопировать фрагмент кода, указанный в MDN.

Ответ 3

чтобы пропустить "словарь" (мы называем его объектом в JS), используйте цикл for in:

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

Ответ 4

Это будет работать во всех реализациях 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);
            }
        }
    }
}

Ответ 5

использовать Object.Keys()

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

Ответ 6

С помощью современного JS-двигателя вы можете использовать Object.keys(driversCounter)

Ответ 7

для новых браузеров: Object.keys( MY_DICTIONARY ) вернет массив ключей. Иначе вы можете пойти по старой школе:

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

Ответ 8

Как говорили другие, вы можете использовать Object.keys(), но кто заботится о старых браузерах, правильно?

Хорошо, да.

Попробуйте this. array_keys из PHPJS-портов PHP удобная функция array_keys, поэтому ее можно использовать в JS. С первого взгляда он использует Object.keys, если поддерживается, но обрабатывает случай, когда это не очень легко. Он даже включает в себя фильтрацию ключей на основе значений, которые вы, возможно, ищете (необязательно), и переключения для того, следует ли использовать строковое сравнение === по сравнению с сравнением сравнения типов == (необязательно)

Ответ 9

если вы можете использовать JQuery, тогда

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

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

здесь следует ответ:

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

и вам не придется беспокоиться, поддерживает ли браузер метод Object.keys или нет.

Ответ 10

Другой подход заключается в использовании многомерных массивов:

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

и получить доступ к значению с помощью driverCounter [k] [j], где j = 0,1 в случае.
Добавьте его в раскрывающийся список:

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];
}