繁体   English   中英

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

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

这个小提琴展示了如何根据我的案例id中的键9的值来获取不在数组中的元素。

http://jsfiddle.net/wgmz40ow/

此解决方案来自此处: JavaScript中两个对象数组之间的区别

在找到该解决方案之前,我尝试使用简单的for循环以一个数组组成,该数组仅由a的对象组成,而不包含b的对象。

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

编辑:在我来说,我特别想处理数组的情况下, b始终是一个数组的一个子集a

我在嵌套循环方面遇到了麻烦,但是一旦我将内部循环分解为一个函数,我就能很快地抓住解决方案:

http://jsfiddle.net/xzy9Lyr0/

不幸的是,我明白为什么其他的解决办法最好-雷将不会返回一个真正的区别,只是在元素a而不是在b ,除非我Concat的两个返回的数组( 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]);
    }
}

请享用!

编辑:修复错字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM