javascript - 比较两个对象数组并删除第二个对象中具有相同属性值的项目

标签 javascript arrays object

我需要做的就是比较两个对象数组并删除第二个对象中具有相同属性值的项目。例如:

var a = [{'name':'bob', 'age':22}, {'name':'alice', 'age':12}, {'name':'mike', 'age':13}];
var b = [{'name':'bob', 'age':62}, {'name':'kevin', 'age':32}, {'name':'alice', 'age':32}];

function remove_duplicates(a, b) {
    for (var i = 0, len = a.length; i < len; i++) {
        for (var j = 0, len = b.length; j < len; j++) {
            if (a[i].name == b[j].name) {
                b.splice(j, 1);
            }
        }
    }

    console.log(a);
    console.log(b);

}

console.log(a);
console.log(b);

remove_duplicates(a,b);

我不明白为什么这不起作用,而是给出:

Uncaught TypeError: Cannot read property 'name' of undefined

我期望的是b中的以下内容:

[{'name':'kevin', 'age':32}];

最佳答案

FIDDLE

 for (var i = 0, len = a.length; i < len; i++) { 
        for (var j = 0, len2 = b.length; j < len2; j++) { 
            if (a[i].name === b[j].name) {
                b.splice(j, 1);
                len2=b.length;
            }
        }
    }

关于javascript - 比较两个对象数组并删除第二个对象中具有相同属性值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17830390/

相关文章:

javascript - 使用 Node 和 mongodb 在单个数组中创建多个文档的过程是什么

javascript - 这些变量引用如何工作?

javascript - 流类型: handling a function argument that could be many types

javascript - 有没有更优雅的方式来编写这个循环?

java - Java中的选择排序不一致

javascript - 从数组中删除项目不起作用

android - 带对象的 Xamarin ListView

object - Treeview 中的返回对象导致 "Maximum call stack size exceeded"Vuetify

javascript - 如果数组结束javascript,则从头开始切片

当突出显示和插入时,JavaScript 不允许将点作为第一个