当前位置: 首页 > 知识库问答 >
问题:

javascript - 这个对象数组怎么合并呢?

黄景胜
2023-10-27
let list = [    {name:'选项1',value:1},    {name:'选项2',value:2},    {name:'其他',value:3},    {name:'其他',value:4},    {name:'其他',value:5}]

怎么把 name 等于选项 3 的合并成一条呢,然后把 value 加起来,比如合并成

[{name:'选项1',value:1},{name:'选项2',value:2},{name:'其他',value:12}]

共有2个答案

卢涵畅
2023-10-27
let res = list.reduce((arr, item) => {    let target = arr.find(citem => citem.name == item.name)    if(target){        target.value += item.value    }else{        arr.push({...item})    }    return arr}, [])
奚高扬
2023-10-27

您可以使用 JavaScript 的 reduce 方法来解决这个问题。reduce 方法会遍历数组中的每个元素,并将它们合并成一个新的对象。

这是如何使用 reduce 方法合并对象的示例代码:

let list = [{name:'选项1',value:1},{name:'选项2',value:2},{name:'其他',value:3},{name:'其他',value:4},{name:'其他',value:5}];let merged = list.reduce((acc, curr) => {  if (acc[curr.name]) {    acc[curr.name].value += curr.value;  } else {    acc[curr.name] = curr;  }  return acc;}, {});list = Object.values(merged);

在这个示例中,我们首先创建一个空对象 acc 作为累加器。然后,我们遍历列表中的每个元素 curr。如果累加器中已经有一个与当前元素的 name 相同的键,我们就将当前元素的 value 加到累加器中对应元素的 value 上。如果累加器中没有这个键,我们就将当前元素添加到累加器中。最后,我们将累加器转换为一个数组,赋值给 list

 类似资料:
  • 问题内容: 让我们看一个例子。 我需要合并这两个对象数组并创建以下数组: 有没有JavaScript或jQuery函数可以做到这一点? 不适合我 它返回 问题答案: 如果要在JavaScript中合并2个对象数组。你可以使用这一招 例如 输出:

  • 怎么把数组arr转换成obj对象这种格式呢 我这样处理只能获取第一层数据

  • 问题内容: 我有两个数组: 阵列1: 和数组2: 我需要基于合并这两个数组,并获得此: 我如何在不迭代低谷的情况下做到这一点? 问题答案: 你可以这样- 如果和的顺序不同,请使用以下代码: 如果和以相同的顺序使用

  • 我有两个数组: 阵列 1: 和阵列 2: 我需要根据合并这两个数组并得到这个: 不通过< code>Object.keys进行迭代,我如何做到这一点?

  • 本文向大家介绍JavaScript如何把两个数组对象合并过程解析,包括了JavaScript如何把两个数组对象合并过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了JavaScript如何把两个数组对象合并过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 合并数组或者对象在数组或对象前面加...,是es6的新写法,然后数组