【发布时间】:2019-03-22 04:48:16
【问题描述】:
我正在尝试比较两个不同的数组,一个是以前的,一个是当前的。上一组数据包含:
[
{"member_name":"Test1","item":"Sword"},
{"member_name":"Test2","item":"Sword"}
]
新集合包含:
[
{"member_name":"Test1","item":"Sword"},
{"member_name":"Test2","item":"Sword"},
{"member_name":"Test1","item":"Shield"}
]
如您所见,Test1 获得了一个新项目。我尝试了几种方法比较这两个数组,但无济于事。
我尝试过的方法:
这个只是返回整个数组。不是单个项目。
Items_Curr.filter(function(item) { return !Items_Prev.includes(item); });
这个方法只返回 3 个未定义的。
Items_Curr.map(e => { e.member_name });
我一直在寻找一种方法来解决这个问题,但其他帖子只是解释了确定更简单数组中变化的方法。
E.G [a,b] - [a, b, c]
更新:
最终目标是我想创建一个新数组“NewItems”,其中包含所有新添加的名称和项目的数组。所以如果有变化,我希望广播,如果没有变化,则忽略,直到再次运行该函数。
【问题讨论】:
-
你需要自己编写比较方法。
-
我认为您的问题缺少一些信息。期望的输出是什么?你想让它看起来像什么。比如,你想知道什么是新的还是删除重复的?
-
就像@Shubham 所说,您需要比较每个项目中的每个键值对,然后将唯一的项目推送到新数组中
-
我已经更新了@Sinaesthetic 的帖子也很公平,我将如何比较每个键值,是否会通过每个项目的 for 循环?我的主数组中有 270 个项目。那么这是否意味着如果有新项目,它需要扫描所有 230 个项目 231 次?这似乎是负载密集型的。
-
没有 JSON 数组这样的东西。 JSON 总是 一个字符串。你有一个对象数组。
标签: javascript arrays