如何将两个以上的对象数组合并为一个对象数组。就像我有:
var arr1 = [{"userID": 554,"name":"abc"},{"userID": 555,"name":"xyz"}]
var arr2 = [{"userID": 554,"lang":"ENG"},{"userID": 554,"lang":"GER"},{"userID": 555,"lang":"ENG"}]
var arr3 = [{"userID": 554,"SET":"QWE"},{"userID": 555,"SET":"ABC"},{"userID": 555,"SET":"XYZ"}]
现在我想通过相同的键值即用户 ID 将所有这些合并为一个,所以我的最终输出应该是
var final = [
{
"name":"abc"
"userID": 554,
"arr2" = [
{
"userID": 554,
"lang":"ENG"
},
{
"userID": 554,
"lang":"GER"
}
],
"arr3" = [
{
"userID": 554,
"SET":"QWE"
}
]
},
{
"userID": 555,
"name":"xyz"
"arr2" = [
{
"userID": 555,
"name":"ENG"
}
],
"arr3" = [
{
"userID": 555,
"SET":"ABC"
},
{
"userID": 555,
"SET":"XYZ"
}
]
}
]
我不能将 ES6 与 Spread 运算符 (...) 一起使用,因为我有一个条件,即它应该合并到键userID
匹配的数组中,以便获得上述输出或类似结果{"userID": 554, "name": "abc", "lang": ["ENG", "GER"],...}
试试这个,应该给出准确的输出
let result = arr1.map(item =>{
let obj = {};
obj.userID = item.userID;
obj.name = item.name;
obj.arr2 = arr2.filter( it => it.userID === item.userID);
obj.arr3 = arr3.filter( it => it.userID === item.userID);
return obj;
})
console.log(result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句