首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript,将对象转换为数组

JavaScript,将对象转换为数组
EN

Stack Overflow用户
提问于 2011-01-06 02:48:26
回答 9查看 58.1K关注 0票数 33

我有一个对象:

代码语言:javascript
复制
var obj = {
    "Mike": 24,
    "Peter": 23,
    "Simon": 33,
    "Tom": 12,
    "Frank": 31
};

我想创建一个保存对象值的数组。可以忽略密钥(密钥名称):

代码语言:javascript
复制
[24, 23, 33, 12, 31]

值的顺序并不重要!

一种解决方案(显然)是使用一个函数来获取这些值并将它们放入一个数组中:

代码语言:javascript
复制
var arr = valuesToArray(obj); 

我会接受这样一个函数作为答案。但是,如果能有一个API函数(ECMAScript、jQuery、特定于浏览器的,...),我会更高兴。可以做到这一点。真的有这样的事情吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2018-04-26 17:17:56

使用Object.values它将返回数组。

代码语言:javascript
复制
Object.values(obj) // [24, 23, 33, 12, 31]
票数 34
EN

Stack Overflow用户

发布于 2011-01-06 02:56:25

最明显的方法是像@quixoto建议的那样执行一个for-in循环,但这只是为了记录,而且由于您正在寻找一种内置方法,您可以将latest browsers上提供的新ECMAScript 5方法Object.keysArray.prototype.map配对

代码语言:javascript
复制
function valuesToArray(obj) {
  return Object.keys(obj).map(function (key) { return obj[key]; });
}

UPDATE:ES2017引入了Object.values方法,它可以做您想要的事情。

此外,ES2017还添加了另一个常用的方法Object.entries。此方法返回一个键-值对数组。

代码语言:javascript
复制
const obj = {
    "Mike": 24,
    "Peter": 23,
    "Simon": 33,
    "Tom": 12,
    "Frank": 31
};

const values = Object.values(obj);
const entries = Object.entries(obj);
console.log('values:', values);
console.log('entries:', entries);

票数 44
EN

Stack Overflow用户

发布于 2011-01-06 02:52:17

在任何地方都没有内置的方法可以做到这一点。以下代码按照您的建议执行,并可能根据您的库“缩短”为更巧妙的函数式编程版本,但它们都具有相同的效率。

代码语言:javascript
复制
function valuesToArray(obj) {
    var result = [];
    for (var key in obj) {
       if (obj.hasOwnProperty(key)) {
           result.push(obj[key]);
       }
    }
    return result;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4607991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档