在过去的一个小时里,我一直在努力让下面的代码正常工作:
for (let i = 0; i < weekarr.length; i++) {
if (i - 1 > -1) {
weekarr[i].forEach(arr => {
weekarr[i - 1].forEach(p => {
if (
arr.html === p.html &&
!(arr.category === "prehab" && arr.canDo === true)
) {
weekarr[i].filter(p => {
console.log(p === arr);
return p === arr;
});
// if (i + 1 < 5) weekarr[i + 1].push(arr);
}
});
});
}
}weekarr看起来是这样的:

如果前一个数组包含相同的数组项(在本例中,通过html属性识别),我基本上是在尝试删除数组项。一切都工作得很好,除了它根本不是过滤。我在控制台上记录了它应该返回true还是false的值,它确实是这样。似乎想不出这件事。
发布于 2020-01-05 20:20:29
filter函数返回一个新的数组。它不会修改原始数组。尝试将过滤器的结果存储在一个新的变量中并返回该结果?
const filteredWeakArr = weekarr[i].filter(p => {
console.log(p === arr);
return p === arr;
});现在,filteredWeakArr应该会得到您想要的结果
发布于 2020-01-05 20:30:31
这是因为您没有保存过滤器数组。结果应该保存为有效,例如
weekarr[i] = weekarr[i].filter(p => {
console.log(p === arr);
return p === arr;
});另请查看filter了解更多信息
https://stackoverflow.com/questions/59599771
复制相似问题