【问题标题】:Loop through an array of objects using forEach [closed]使用 forEach 循环遍历对象数组 [关闭]
【发布时间】:2022-01-09 04:35:31
【问题描述】:

有以下输入:

const myArray = [{data: {value: 1, name: 'john', age: 22 } },{data: {value: 2, name: 'mike', age: 42 } }];

希望遍历这个数组,以便创建一个只包含一些数据的新数组,在本例中是姓名和年龄。

结果应该是:[{name: 'john', age: 22 }, {name: 'mike', age: 42 }]

我尝试过使用 forEach:

const result = myArray.forEach(el => ({el.data.name, el.data.age}));

这个解决方案有什么问题?

【问题讨论】:

  • forEach 不返回任何内容(显式)。
  • 只需将forEach 替换为map 即可完成
  • @CristianTraìna 还有el => ({el.data.name, el.data.age})) -> el => ({name: el.data.name, age: el.data.age})({data: {name, age}}) => ({name, age})
  • Array.prototype.forEach():“返回值:undefined。”
  • @VLAZ 我没注意到,不错

标签: javascript arrays loops ecmascript-6 foreach


【解决方案1】:

由于Array#forEach() 方法不返回值,我们不会将其分配给变量,而是像循环一样使用它:

const myArray = [{data: {value: 1, name: 'john', age: 22 } },{data: {value: 2, name: 'mike', age: 42 } }];

const result = [];
myArray.forEach( ({data: {name,age}}) => result.push( {name,age} ) );

console.log( result );

const myArray = [{data: {value: 1, name: 'john', age: 22 } },{data: {value: 2, name: 'mike', age: 42 } }];

const result = [];
myArray.forEach( ({data: {value, ...desired}}) => result.push( desired ) );

console.log( result );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2014-07-13
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多