Javascript-在不使用Array.prototype.filter的情况下,根据键值获取两个对象数组之间的差异

Javascript - getting difference between two arrays of objects based on key value without using Array.prototype.filter

本文关键字:获取 两个 之间 数组 对象 键值 Array prototype 情况下 filter Javascript-      更新时间:2023-09-26

这个fiddle展示了如何根据键9的值来抓取不在数组中的元素(在我的例子中是id)。

http://jsfiddle.net/wgmz40ow/

这个解决方案取自这里:JavaScript 中两个对象数组之间的差异

在找到该解决方案之前,我尝试使用简单的for循环,最终得到一个仅由a中的对象组成但不由b中的对象构成的数组。

有人能在不使用javascripts Array.prototype.filter函数的情况下提供解决方案吗?

编辑:在我的例子中,我特别想处理一个数组b总是数组a的子集的情况。

我遇到了嵌套循环的麻烦,但一旦我把内部循环分解成一个函数,我就能很快找到解决方案:

http://jsfiddle.net/xzy9Lyr0/

不幸的是,我明白了为什么另一种解决方案更可取——我的解决方案不会返回真正的差异,只有a中的元素,而不是b中的元素(http://jsfiddle.net/xzy9Lyr0/2/)。

以下是一个可能包含恶作剧痕迹的答案。

为了通过学习来扩展@Jon对理解的呼吁,这里有一个简单而复杂的解决方案:

var bstr = JSON.stringify(b);
for (var i = a.length - 1; i >= 0; i--) {
    if (!~bstr.indexOf(JSON.stringify(a[i]))) {
        c.push(a[i]);
    }
}

享受吧!

编辑:修复打字错误。