相当于Python的values()字典方法的Javascript
这个问题已经在这里有了答案:
如何获取Javascript对象的所有属性值(不知道键)? 21个答案
在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中字典的值?
编辑
我最初的打印示例不清楚我想做什么。 我只想要字典中值的列表/数组。
我意识到我可以遍历列表并创建值的新列表,但是有更好的方法吗?
monkut asked 2020-01-02T08:00:13Z
8个解决方案
72 votes
更新
我赞成阿德南的答案,因为这是第一个答案。 如果有帮助,我只是发布更多细节。
for..in循环就是您要寻找的-
var dictionary = {
id:'value',
idNext: 'value 2'
}
for (var key in dictionary){
//key will be -> 'id'
//dictionary[key] -> 'value'
}
要获取if..else对象中的所有键,您可以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]]
Jibi Abraham answered 2020-01-02T08:00:59Z
23 votes
使用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 });
Temuz answered 2020-01-02T08:01:19Z
17 votes
Firefox 47和Chrome 51中提供了Object.values(),以下是用于其他浏览器的单行polyfill:
Object.values = Object.values || function(o){return Object.keys(o).map(function(k){return o[k]})};
user answered 2020-01-02T08:01:39Z
10 votes
并不是要说其他任何答案都是错误的,但是如果您不反对使用外部库,underscore.js就有一种方法可以做到这一点:
_.values({one: 1, two: 2, three: 3});
// returns [1, 2, 3]
CatShoes answered 2020-01-02T08:01:59Z
6 votes
您可以使用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]);
}
Adi answered 2020-01-02T08:02:19Z
3 votes
在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]);
}
xdazz answered 2020-01-02T08:02:39Z
2 votes
在Firefox当前默认支持的ES6和Chrome中带有标志的ES6中,您可以执行以下操作:
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)];
for现在将是预期的数组。
这对于代码高尔夫也很有用。 删除for周围的空格可将其减少到17个字符。
Scimonster answered 2020-01-02T08:03:08Z
0 votes
如果只想获取值,请使用以下代码:
for(keys in mydict){
var elements = mydict[keys];
console.log(elements);
}
您可以通过elements数组中的索引值获取单个元素。
BeingNerd answered 2020-01-02T08:03:32Z