javascript - 比较值,如果匹配则添加到数组

标签 javascript

我试图将 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/

相关文章:

javascript - 使用 jQuery 删除父 Div 内的 Div 类

javascript - Google 表格/JIRA 连接

javascript - Material-UI,单选按钮+ map 功能(React JS)

javascript - 如果 Promise 尚未结算,那么 then 之后的代码如何运行?

javascript - 在 Shiny 中获取响应头变量

javascript - 使用 onclick 函数增加 PHP 变量的值

javascript - typescript : XMLHttpRequest is not defined in . ts 文件

javascript - 使用 VivaGraphJS 的恒定布局图

javascript - 禁用 Javascript 时的 Ajax 回退

javascript readline 流关闭事件不会被触发