我试图减去,即删除多个对象,即在array1中找到的array2对象,以便最终结果是array2仅包含“ jean”对象。

救命!我迷路了。

我像下面的示例一样尝试了多次代码,但没有成功。


array1= [{"caracname" : "charles"}, {"caracname" : "kevin"}]
array2= [{"caracname" : "charles"}, {"caracname" : "kevin"}, {"caracname" : "jean"}]

            array1.forEach(function (k) {
                delete array2[k];
            });

            console.log(array2);

最佳答案

这是如何执行此操作:

function objectsEqual(o1, o2) {
    return o1.caracname === o2.caracname
}

function subtractArrays(a1, a2) {
    var arr = [];
    a1.forEach((o1) => {
       var found = false;
       a2.forEach((o2) => {
           if (objectsEqual(o1, o2)) {
                found = true;
           }
       });
       if (!found) {
           arr.push(o1);
       }
    })
    return arr;
}

console.log(subtractArrays(array2, array1));


固定在插栓中:https://plnkr.co/edit/vA6oWg9R44f6k7ylyFh6?p=preview

10-05 20:52