values在python中的意思_相当于Python的values()字典方法的Javascript

相当于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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值