在Python中,我可以使用.values()
方法迭代字典的值。
例如:
mydict = {'a': [3,5,6,43,3,6,3,],
'b': [87,65,3,45,7,8],
'c': [34,57,8,9,9,2],}
values = mydict.values():
values
包含的位置:
[
[3,5,6,43,3,6,3,],
[87,65,3,45,7,8],
[34,57,8,9,9,2],
]
如何只在Javascript中获取字典的值?
修改
我原来的打印示例并不清楚我想做什么。我只想要字典中值的列表/数组。
我意识到我可以在列表中循环并创建一个新的值列表,但有更好的方法吗?
答案 0 :(得分:67)
<强>更新强>
我赞成Adnan的答案,因为这是第一个。如果有帮助,我只是发布一些细节。
您正在寻找for..in循环 -
var dictionary = {
id:'value',
idNext: 'value 2'
}
for (var key in dictionary){
//key will be -> 'id'
//dictionary[key] -> 'value'
}
要获取dictionary
对象中的所有密钥,您可以Object.keys(dictionary)
这意味着,您可以在数组循环中执行相同的操作 -
var keys = Object.keys(dictionary);
keys.forEach(function(key){
console.log(key, dictionary[key]);
});
当您想要过滤密钥而不编写丑陋的if..else
循环时,这尤其方便。
keys.filter(function(key){
//return dictionary[key] % 2 === 0;
//return !key.match(/regex/)
// and so on
});
更新 - 要获取字典中的所有值,目前没有其他方法可以执行循环。你如何做循环是一个选择问题。就个人而言,我更喜欢
var dictionary = {
a: [1,2,3, 4],
b:[5,6,7]
}
var values = Object.keys(dictionary).map(function(key){
return dictionary[key];
});
//will return [[1,2,3,4], [5,6,7]]
答案 1 :(得分:22)
使用jQuery,有一个使用$ .map()的漂亮的一行版本:
var dict = {1: 2, 3: 4};
var values = $.map(dict, function(value, key) { return value });
var keys = $.map(dict, function(value, key) { return key });
答案 2 :(得分:15)
Object.values(),这是其他浏览器的单行polyfill:
Object.values = Object.values || function(o){return Object.keys(o).map(function(k){return o[k]})};
答案 3 :(得分:10)
不要试图说任何其他答案都是错误的,但如果您不反对使用外部库,underscore.js有一个方法可以解决这个问题:
_.values({one: 1, two: 2, three: 3});
// returns [1, 2, 3]
答案 4 :(得分:6)
您可以使用for in
mydict = {'a': [3,5,6,43,3,6,3,],
'b': [87,65,3,45,7,8],
'c': [34,57,8,9,9,2]};
for (var key in mydict){
alert(mydict[key]);
}
答案 5 :(得分:3)
在javascript中,您使用for..in
来循环对象的属性。
var mydict = {
'a': [3,5,6,43,3,6,3,],
'b': [87,65,3,45,7,8],
'c': [34,57,8,9,9,2]
};
for (var key in mydict) {
console.log(mydict[key]);
}
答案 6 :(得分:2)
在ES6中,默认情况下目前支持Firefox,Chrome中有标记,您可以执行以下操作:
a = {'a': [3,5,6,43,3,6,3,],
'b': [87,65,3,45,7,8],
'c': [34,57,8,9,9,2]}
values = [a[x] for (x in a)];
values
现在将成为预期的数组。
这对code golf也很有用。删除for
周围的空格会将其缩小为17个字符。
答案 7 :(得分:0)
如果您只想获取值,请使用以下代码:
for(keys in mydict){
var elements = mydict[keys];
console.log(elements);
}
您可以通过元素数组中的索引值获取Individual元素。