В python dict.items
возвращает список кортежей, содержащий ключи и значения dict
.В Javascript нет кортежей, поэтому это должен быть вложенный массив.
Если вы простите мне небольшой код на Python, чтобы показать разницу.
>>> {1:2, 2:3}.items()
[(1, 2), (2, 3)]
>>> {1:2, 2:3}.values()
[2, 3]
Я вижуПринятый ответ возвращает массив значений объектов, который является эквивалентом функции python dict.values
.То, что просят, это dict.items
.Для этого просто зациклите и создайте вложенный массив из 2-х элементов.
function items(obj){
var ret = [];
for(v in obj){
ret.push(Object.freeze([v, obj[v]]));
}
return Object.freeze(ret);
}
Я положил Object.freeze
в педантичный режим и убедился, что возвращаемое значение не должно изменяться, чтобы эмулироватьнеизменность кортежей Python.Очевидно, что это все еще работает, если вы уберете его.
Следует отметить, что выполнение этого несколько противоречит цели items
в том смысле, что он используется при итерации по объекту линейным, а не ассоциативным способом, и этоизбегает вычисления значения хеша для поиска каждого элемента в ассоциативном массиве.Для маленьких объектов, которые заботятся, но для больших, это может замедлить вас, и может быть более идиоматичный способ сделать то, что вы хотите в javascript.
Другой более новый способ сделать это - использовать Object.entry () , которая будет делать именно то, что вы хотите.
Object.entries({1:1, 2:2, 3:3})
.forEach(function(v){
console.log(v)
});
Поддержка ограничена версиями браузера, упомянутыми в документации.