我有对象数组:
[
{ 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_id
在groupedArray
中查找元素功能。如果找到该元素,我会将 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/