📌  相关文章
📜  javascript 使用 reduce 更新对象数组 site:stackoverflow.com - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:41.460000             🧑  作者: Mango

使用 reduce 更新对象数组

在 JavaScript 中,可以使用 reduce 方法来对数组进行迭代并返回一个累加器值。它可以用来更新对象数组的属性。

简介

假设我们有以下的对象数组:

const users = [
  { id: 1, name: 'Alice', score: 70 },
  { id: 2, name: 'Bob', score: 80 },
  { id: 3, name: 'Charlie', score: 90 }
];

现在我们想要将每个用户的分数加上 10 分,可以使用 reduce 方法来实现:

const updatedUsers = users.reduce((acc, cur) => {
  const { score, ...rest } = cur;
  return [...acc, { ...rest, score: score + 10 }];
}, []);

这里的 reduce 方法的第一个参数是一个函数,该函数有两个参数:累加器(acc)和当前值(cur)。初始值为一个空数组([])。

在函数中,我们通过对象解构将当前用户的分数和其余属性分离开来,并返回一个新的对象,其中分数属性是加上了 10 的。

最后,我们将处理之后的对象加入到累加器中,得到更新之后的数组。

更多示例
累计得分

可以使用 reduce 方法累计得分值:

const totalScore = users.reduce((acc, cur) => acc + cur.score, 0);

这里的初始值为 0,将每个用户的分数加起来,得到了总分数值。

查找最高分

可以使用 reduce 方法查找最高分的用户:

const userWithHighestScore = users.reduce((acc, cur) =>
	cur.score > acc.score ? cur : acc
);

该方法比较每个用户的分数,取得最高分用户。

结论

JavaScript 中的 reduce 方法使得对于数组的操作非常便捷。结合对象解构语法,可以很方便地修改对象数组的属性。