首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ES6特性将对象转换为数组

使用ES6特性将对象转换为数组
EN

Stack Overflow用户
提问于 2014-08-09 10:44:01
回答 8查看 116.5K关注 0票数 75

给定javascript对象,如何将其转换为ECMAScript-6中的数组?

例如,考虑到:

代码语言:javascript
复制
 var inputObj = {a:'foo', b:[1,2,3], c:null, z:55};

预期产出将是:

代码语言:javascript
复制
 ['foo', [1,2,3], null, 55]

结果中元素的顺序对我来说并不重要。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-08-09 11:33:12

使用(ES5) Array::mapkeys上使用箭头函数 (仅用于简短的语法,而不是功能):

代码语言:javascript
复制
let arr = Object.keys(obj).map((k) => obj[k])

真正的ES6风格将是编写一个生成器,并将其转换为一个数组:

代码语言:javascript
复制
function* values(obj) {
    for (let prop of Object.keys(obj)) // own properties, you might use
                                       // for (let prop in obj)
        yield obj[prop];
}
let arr = Array.from(values(obj));

令人遗憾的是,没有一个对象迭代器能够进入ES6本地人。

票数 119
EN

Stack Overflow用户

发布于 2017-08-03 15:49:30

只需使用Object.values

代码语言:javascript
复制
Object.values(inputObj); // => ['foo', [1,2,3], null, 55]
票数 63
EN

Stack Overflow用户

发布于 2014-08-09 10:54:17

我喜欢老式的方式:

代码语言:javascript
复制
var i=0, arr=[];
for (var ob in inputObj)
  arr[i++]=ob;

老派以很大的优势赢得了杰斯普夫试验,如果不是上升的话。有时新增加的是“错误的特性”。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25217706

复制
相关文章

相似问题

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