javascript - 从对象数组中搜索对象数组 - Javascript

标签 javascript arrays

我有两个对象数组:

var objArray1 = [{'name':'abc', 'phone':'0333'}, 
                {'name':'xyz', 'phone':'0334'},
                {'name':'fgfh', 'phone':'0999'},
                {'name':'abc', 'phone':'0666'},
                {'name':'abc', 'phone':'0444'} 
               ]

var objArray2 = [{'name':'abc', 'mobile':'0333'}, 
                {'name':'xyz', 'mobile':'0334'},
                {'name':'fgfh', 'mobile':'0999'} 
               ]

我想搜索objArray1的索引电话来自objArray2 .

如果匹配,我想要 objArray1对象待推送existing数组,如果没有匹配则将该对象插入 joiners数组。

这就是我正在尝试做的事情。

objArray1.forEach(function(item){
    if (objArray2.indexOf(item.phone) < 0) {
        joiners.push(item)
    }else{
        existing.push(item)
    }
})

上面的代码不起作用并放置 objArray1 的所有对象变成木工。

当前结果:

joiners = [{'name':'abc', 'phone':'0333'}, 
                {'name':'xyz', 'phone':'0334'},
                {'name':'fgfh', 'phone':'0999'},
                {'name':'abc', 'phone':'0666'},
                {'name':'abc', 'phone':'0444'} 
               ]

想要的结果:

joiners = [{'name':'abc', 'phone':'0666'},
           {'name':'abc', 'phone':'0444'} 
          ]

之后我想检查反之亦然并制作一组离开者 if any object of objArray2 objArray1中不存在。

最佳答案

您可以使用 Array#some 检查是否存在功能。如果满足条件,则返回 true,否则返回 false。 indexOf 是通过比较引用来进行检查,因为你有不同的对象,所以在 if 语句中你总是会得到 false

我对 forEach 函数中的代码进行了一些更改

const objArray1 = [
    {'name':'abc', 'phone':'0333'}, 
    {'name':'xyz', 'phone':'0334'},
    {'name':'fgfh', 'phone':'0999'},
    {'name':'abc', 'phone':'0666'},
    {'name':'abc', 'phone':'0444'}];

const objArray2 = [ 
    {'name':'abc', 'mobile':'0333'}, 
    {'name':'xyz', 'mobile':'0334'},
    {'name':'fgfh', 'mobile':'0999'}];
                
const joiners = [];
const existing = [];

objArray1.forEach(item => 
    objArray2.some(i => i.mobile === item.phone) ? 
    joiners.push(item) : existing.push(item));

console.log(joiners);
console.log(existing);

关于javascript - 从对象数组中搜索对象数组 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725324/

相关文章:

javascript - ajax成功后重试没有.done

javascript - 使用 Javascript 将行插入表

javascript - 无法绑定(bind)到 'property',因为它不是 'selector' 的已知属性

javascript - 为什么在javascript中将 '1'添加到变量中会添加 '3'

Android Studio For 循环开启

javascript - 如何根据 JavaScript 中另一个数组的索引从一个数组中选择元素?

java - 当我尝试从对象数组调用方法时,我的 Java 代码崩溃了

javascript - 对多维对象数组进行排序

C 编程 : for loop and break

javascript - 初始选项卡不会触发打开的、就绪的事件