我试图将 2 个数据源合并为 1 个数据源,我想遍历它们,如果特定值匹配,则将其添加到具有相同值的第一个对象,然后将已存在的空数组添加到空数组中。不管我有多少对象。
假设我有这些信息
来源 1
one = {
"teams": [
{
name: 'ABC',
members: [],
rooms: '0'
},
{
name: 'DEF',
members: [],
rooms: '1'
}
]
}
来源 2
two = {
"persons": [
{
name: 'Foo',
gender: 'male',
room: '1'
},
{
name: 'Bar',
gender: 'female',
room: '2'
}
]
}
我想要的是,如果“room and rooms”值匹配,则“persons”数组合并到 members 数组。
我假设是这样的:
for(var i = 0 ; i < two.persons.length; i++) {
if (one.teams[i].rooms == two.persons[i].room) {
data.teams[i].members.push(two.persons[i]);
}
}
最佳答案
使用高阶方法你可以:
one = {
"teams": [
{
name: 'ABC',
members: [],
rooms: '0'
},
{
name: 'DEF',
members: [],
rooms: '1'
}
]
};
two = {
"persons": [
{
name: 'Foo',
gender: 'male',
room: '1'
},
{
name: 'Bar',
gender: 'female',
room: '2'
}
]
};
var ttt = one.teams.map(function(x){
var roomVal= x.rooms;
x.members = two.persons.filter(function(t){
return t.room == roomVal});
return x;
})
one.teams = ttt;
console.log(one)
关于javascript - 比较值,如果匹配则添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545712/