JavaScript过滤器返回true,但未过滤

时间:2020-01-05 12:18:15

标签: javascript arrays reactjs filter

在过去的一个小时里,我一直在努力使以下代码起作用:

  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看起来像这样:

weekarr

如果先前的数组包含相同的数组项(在这种情况下使用html属性识别),则我基本上是在尝试删除数组项。一切都可以正常运行,只是根本不进行过滤。我在控制台上记录了它是否应该返回true或false值。似乎无法弄清楚这一点。

2 个答案:

答案 0 :(得分:1)

filter函数返回一个新数组。它不会修改原始数组。 尝试将过滤器的结果存储在新变量中并返回?

const filteredWeakArr = weekarr[i].filter(p => {
   console.log(p === arr);
   return p === arr;
});

现在,filteredWeakArr应该会达到您想要的结果

答案 1 :(得分:1)

那是因为您没有保存过滤器阵列。结果应保存为有效,例如

go get -u github.com/tsenart/vegeta

也请检查filter以获得更多信息