无法在 forEach 循环中更新 JSON 值

use*_*094 0 javascript

我有一个 json 数组,我想在其中更新某个虚拟键的值。这是我的代码。

var data = [{
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}]


var temp = JSON.parse(JSON.stringify(data)).forEach(item => item.name = 'Hi');

console.log(temp);
Run Code Online (Sandbox Code Playgroud)

我得到输出,undefined 但我希望所有的name值都是Hi

我哪里错了?

Der*_*ang 6

Array.forEach确实返回,undefined所以你不会得到数组。

在您的情况下,请使用Array.prototype.map.

var data = [{
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}, {
  "name": "Abc1"
}]


var temp = JSON.parse(JSON.stringify(data)).map(item => ({ ...item, name: 'Hi' }));

console.log(temp);
Run Code Online (Sandbox Code Playgroud)