javascript - 如何遍历对象文字数组,连接共享重复 id 的值?

标签 javascript arrays javascript-objects

<分区>

我需要一种有效的方法来遍历对象文字数组并连接具有重复 ID 的对象中的值。

与嵌套多个 for 循环相比,是否有更优雅的方式来执行此操作?

例如,这是我得到的数据:

{ "theList": [
    {
        "id": 101,
        "name": "Bubbles' Cat Farm",
        "number": "123"
    },
    {
        "id": 102,
        "name": "Sunnyvale Park",
        "number": "456"
    },
    {
        "id": 101,
        "name": "Bubbles' Cat Farm",
        "number": "789"
]};

预期的结果应该是:

{ "theList": [
    {
        "id": 101,
        "name": "Bubbles' Cat Farm",
        "number": "123, 789"
    }, 
    {
        "id": 102,
        "name": "Sunnyvale Park",
        "number": "456"
]}


最佳答案

你可以使用 reduce

let obj = [{ "id": 101,"name": "Bubbles' Cat Farm","number": "123"},{"id": 102,"name": "Sunnyvale Park","number": "456"},{"id": 101,"name": "Bubbles' Cat Farm","number": "789"}];

let op = obj.reduce((out,inp)=>{
  if(out[inp.id]){
    out[inp.id].number += ', ' + inp.number;
  } else {
    out[inp.id] = inp
  }
  return out
},{})

console.log(Object.values(op))

关于javascript - 如何遍历对象文字数组,连接共享重复 id 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485682/

相关文章:

c - 将指针数组传递给函数

javascript - 查找并替换字符串中的所有匹配项

javascript - Lambda 未将 http 响应正文返回到 API 网关

javascript - json编码多维数组获取值

javascript - JavaScript 数组中需要迭代器吗?

javascript - 使用变量获取 Javascript 对象属性?

javascript - 合并 Javascript 对象

javascript - 禁用滚动但使用 JavaScript 捕获滚动数据?

java - Java中用于保存存储桶列表ID的默认结构

javascript - Vue JS 中的图片路径