javascript - 将项目推送到对象键的值数组

标签 javascript arrays javascript-objects

我有对象数组:

[
 { pair_id: 1, exchange_pair_id: 183 },
 { pair_id: 1, exchange_pair_id: 2},
 ...
]

我想将这个数组重建为

[
 { pair_id: 1, exchange_pair_id: [183, 2] },
 ...
]

这是我编写的代码(无论如何,该代码使我最接近所需的结果):

var array = [];

rows.forEach(function(row) {
    var obj = {};
    obj.pair_id = [row.pair_id];
    obj.exchange_pair_id = [row.exchange_pair_id]
    array.push(obj);
});

结果是:

[
 { pair_id: 1, exchange_pair_id: [183] },
 { pair_id: 1, exchange_pair_id: [2] },
 ...
]

这似乎是一个非常简单的问题,有一个简单的解决方案,但我绞尽脑汁也想不出来。

最佳答案

尝试这个解决方案。我通过 Array#forEach 迭代数组并尝试使用Array#find通过pair_idgroupedArray中查找元素功能。如果找到该元素,我会将 exchange_pair_id 插入该元素的数组中。如果不是,我会根据项目的值在数组中创建一个新项目。

const array = [
  { pair_id: 1, exchange_pair_id: 183 },
  { pair_id: 1, exchange_pair_id: 2},
  { pair_id: 2, exchange_pair_id: 7},
  { pair_id: 3, exchange_pair_id: 988},
  { pair_id: 2, exchange_pair_id: 8},
  { pair_id: 3, exchange_pair_id: 98}
];

const groupedArray = [];

array.forEach(item => {
  
  const found = groupedArray.find(x => x.pair_id === item.pair_id);
  
  if(found) {
     found.exchange_pair_id.push(item.exchange_pair_id);
  } else {
     groupedArray.push({ pair_id: item.pair_id, exchange_pair_id: [item.exchange_pair_id]});
  }
  
});

console.log(groupedArray);

关于javascript - 将项目推送到对象键的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365660/

相关文章:

javascript - 对预检请求的响应未通过 NodeJS 中的访问控制检查

javascript - 如何使用 JavaScript 通过子字符串获取 ymd

python - Numpy 数组索引和/或添加似乎很慢

javascript - NodeJS函数被socketio事件中断

javascript - 按数组中的多个属性对对象进行分组,然后求和它们的值

javascript - 这是对总结对象数组有益的 JavaScript 重构吗?

javascript - 我的响应式导航栏不工作

javascript - IF && 语句 Javascript

Javascript合并/减少相同的多维对象

javascript - 显示多个对象的内容?