我有两个流动的数组,但是我需要使用矩函数从另一个数组元素中删除一个数组元素
let A = [moment('2019-01-17'),moment('2019-01-19')];
let B = [moment('2019-01-17')];
diff = A.filter(x => {
B.forEach(xx => {
if (!x.isSame(xx)) {
return true;
}
});
});
预期投入diff = [moment('2019-01-19')]
我的工作现场plunker
答案 0 :(得分:1)
对filter()
的回调应仅返回一个布尔值,指示是否应包含该项目。您没有从回调中返回任何内容。您可以使用some()
来创建布尔值,该布尔值将在数组B
中查找,并看到条件匹配所有项目。这使用了!some()
,这基本上是在说:“某些项目并不匹配”。您也可以在相反的条件下使用`every()。
let A = [moment('2019-01-17'),moment('2019-01-19')];
let B = [moment('2019-01-17')];
diff = A.filter(x => !B.some(xx => x.isSame(xx)));
console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>