简单来说,我想从一个数组中减去另一个数组。
这些数组是对象数组。我知道可以循环遍历一个数组,在每个项目上比较另一个数组中的值,但那看起来有点混乱。
感谢帮助,希望这个问题不太基础,我已经试过在Google上搜索但没有结果:(
编辑:
我希望从数组中删除的对象将具有相同的值,但却不是同一个对象(感谢@patrick dw)。我要完全删除初始数组中的子集。
简单来说,我想从一个数组中减去另一个数组。
这些数组是对象数组。我知道可以循环遍历一个数组,在每个项目上比较另一个数组中的值,但那看起来有点混乱。
感谢帮助,希望这个问题不太基础,我已经试过在Google上搜索但没有结果:(
编辑:
我希望从数组中删除的对象将具有相同的值,但却不是同一个对象(感谢@patrick dw)。我要完全删除初始数组中的子集。
这个答案是从https://dev59.com/v1cO5IYBdhLWcg3wtz71#53092728复制的,附加了一个注释和一个使用对象解决方案。
这段代码过滤数组A。从A中删除所有包含在B中的值。
const A = [1, 4, 3, 2]
const B = [0, 2, 1, 2]
console.log(A.filter(n => !B.includes(n)))
与对象相同:
const A = [{id:1}, {id:4}, {id:3}, {id:2}]
const B = [{id:0}, {id:2}, {id:1}, {id:2}]
console.log(A.filter(a => !B.map(b=>b.id).includes(a.id)))
http://phpjs.org/functions/index
JavaScript中没有内置的方法来实现此操作。如果您查看此网站,会发现有许多与PHP具有类似语法的数组函数。
let a = [0, 2, 5, 6, 1];
let b = [2, 6, 2, 5, 0];
function arrayDiff() {
for (i of b) {
for (j of a) {
if (i === j) {
a.splice(a.indexOf(j), 1);
}
}
}
return a;
}
{a:1} != {a:1}
但var a = b = {a:1}; a == b
- user113716