2016-02-19 100 views
0

我有两个数组与对象:JS:比较数组的对象,并删除重复

var oldUsers = [{"name": "Sam", "ext": 12}, {"name": "John", "ext": 15}]; 
var newUsers = [{"name": "John", "ext": 15}, {"name": "Jim", "ext": 19}]; 

现在我想从两个阵列,这是在两个数组中删除对象。在这个例子中,我试图从两个数组中删除{"name": "John", "ext": 15}。这两个数组包含200个或多个对象,并在最后,我需要处理未删除的对象,所以在最后我的阵列必须是这样的:

var oldUsers = [{"name": "Sam", "ext": 12}]; 
var newUsers = [{"name": "Jim", "ext": 19}]; 

是否有人对你有一个想法如何通过循环数组来解决这个问题?我需要将数组与大量对象进行比较,然后想要使用splice()或类似的数组删除重复条目。

在此先感谢!

+0

这将是非常低效的,你必须首先比较一个数组中的每个对象与另一个数组中的每个对象。你不能使用'=='或'==='进行比较,因为在比较不同的对象时它们总是返回false。所以您还需要一个比较函数来遍历每个对象的属性,以查看其他对象是否具有相同的属性和相同的值。试试吧,发布你的尝试。 – RobG

回答

0

对于在一个数组中找到的所有项目创建一组键值(例如,构建为"<name>:<ext>",并遍历另一个数组检查该值),会更好。然后为“交换”数组运行相同的事情。

相关问题