如何将JavaScript对象数组转换为值数组的数组?
JavaScript 对象数组转值数组的数组实现方法
需求说明
现有如下结构的对象数组:
const data = [{id: 1, name: 'james', country: 'US'}, {id: 2, name: 'john', country: 'NG'}];
需要将其转换为值数组的数组,目标格式为:
const newdata = [[1,'james', 'US'], [2,'john', 'NG']];
问题分析
你之前的代码只提取了对象的name字段,所以结果不符合预期,核心是需要提取每个对象的所有属性值并组成数组,再添加到新数组中。
解决方法
方法1:修正for循环(手动指定字段)
如果确定对象的字段固定,可以手动将每个字段的值组成数组后push:
const newdata = []; for (let index = 0; index < data.length; index++) { const currentItem = data[index]; newdata.push([currentItem.id, currentItem.name, currentItem.country]); }
方法2:for循环+Object.values()(自动提取所有字段)
如果对象字段可能变化,用Object.values()自动提取当前对象的所有值,更灵活:
const newdata = []; for (let index = 0; index < data.length; index++) { newdata.push(Object.values(data[index])); }
方法3:数组map方法(简洁写法)
用数组的map方法可以一行完成转换,代码更简洁:
const newdata = data.map(item => Object.values(item));
注意:
Object.values()会按照对象属性的定义顺序返回值数组(ES6及以上版本支持),和你目标格式的顺序一致。
内容的提问来源于stack exchange,提问作者yusufff
相关产品推荐
相关产品推荐

