gpt4 book ai didi

javascript - 如何比较两个数组并返回差异? (双向工作?)

转载 作者:行者123 更新时间:2023-11-29 10:27:29 24 4
gpt4 key购买 nike

所以我希望在普通的 ES6 JS 中实现这一点。请不要使用 jQuery! (Lodash 是可以接受的!)

基本上我有 2 个数组,1 个包含对象,1 个包含 ID。

const old = [
{
id: 1,
name: 'object_1',
},
{
id: 2,
name: 'object_2',
},
];

const newIds = [1, 2, 3];

我目前对这个问题的解决方案如图所示;

const difference = newIds.filter(n => !old.some(o => o.id === n));

这导致返回 [3]

基本上,我目前正在使用它来确定是否缺少某些内容,如果缺少,则在我的数据库中创建它。

但是,我需要做相反的事情。如果删除了某些内容,我需要比较并删除该项目。

问题在于;此当前解决方案仅适用于“一种方式”,因此我无法执行上述操作。

理想情况下,无论是创建还是删除,我只需要 1 条语句,并且我只希望它返回任一数组中缺少的内容的 ID。

希望这是有道理的。

最佳答案

要查找出现在其中一个但不出现在另一个中的值,请使用 lodash 的

_.xor(array1, array2);

在你的情况下:

> const _ = require('lodash');

> const old = [
... { id: 1, name: 'object_1' },
... { id: 2, name: 'object_2' },
... { id: 3, name: 'object_3' },
... { id: 4, name: 'object_4' },
... ];

> const newIds = [1, 3, 5, 7];

> _.xor(old.map(x => x.id), newIds)
[ 2, 4, 5, 7 ]

关于javascript - 如何比较两个数组并返回差异? (双向工作?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com