JavaScript如何从数组各元素中提取合并指定属性的所有值
对象数组提取所有words字段整合为一维数组的实现
先修正你给出的原始测试数据的语法问题(字符串引号缺失)后,常见可落地的实现方式有三种:
- 写法1:
flatMap实现(现代JS环境最简洁)
核心逻辑:// 修正语法错误后的原始数据源 const sourceArr = [ { words: ['help', 'good'], glass: 'empty' }, { words: ['low', 'cool'], glass: 'full' } ]; // 一行完成提取整合 const result = sourceArr.flatMap(item => item.words); // 输出结果:['help', 'good', 'low', 'cool']flatMap会先遍历数组执行映射,再把映射返回的内容做1层扁平化,刚好适配单层级提取words的场景,无需额外拼接操作。 - 写法2:
reduce实现(全环境兼容,无版本限制)
核心逻辑:以空数组为遍历初始值,每遍历到一个对象,就把它的words字段内容拼接到累计结果中,遍历完成直接拿到整合后的一维数组,兼容性强,可适配老旧运行环境。const result = sourceArr.reduce((acc, cur) => acc.concat(cur.words), []); - 写法3:普通循环拼接(逻辑最直观,适合入门理解)
const result = []; for (let i = 0; i < sourceArr.length; i++) { result = result.concat(sourceArr[i].words); }
注意:你最初给出的测试数据存在语法问题,比如['help','good]中good后漏写了闭合单引号,运行前必须修正为合法JS结构,否则会直接触发语法报错无法执行。
内容的提问来源于stack exchange,提问作者jaan_ninjabatman
相关产品推荐
相关产品推荐

