删除在 for 循环中找到的匹配项

remove matched items found in for loop

我正在搜索对象数据响应并检测它是否包含“wdt”。这工作正常;然而,我正在努力销毁或 删除 找到的项目,使其无法使用我的 data.

进行处理

不相信在 JavaScript?[=14 中有像 delete 这样的有效关键字可以做到这一点=]

我目前正在尝试 splice,但似乎没有效果。仍在我的 console.log(data);

中找到项目
let data = await getData(); 

filterChkpt();

function filterChkpt(){
    for (let i = 0; i < data.length; i++) {
      if (data[i].url.indexOf('wdt') > -1) {
          console.log(data[i]);

          data[i].splice(index, 1); // here would like to remove matches

      } else {
         // console.log('else: ', data[i].url);
      }
    }
  }

  console.log(data);

  if (!this.data) {
    this.data = {};
  }

  this.data.storage = new Memory({ data });

  return this;

除非出于某种原因需要改变原始对象,这就是 array.filter 的用途。 (这让我害怕在迭代对象时修改对象。)

const data = Array.from({length: 10}, () => ({ url: Math.random() > 0.5 ? 'foo' : 'bar' }));

console.log(data);
console.log(data.filter(x => x.url === 'foo'));

这不是解决方案,而是对代码未按预期工作的原因的解释

a = [a, b, c, d, e, f]

i=0 => a
i=1 => b
i=2 => c  ( now you decide to splice the array >> a = [a, b, d, e, f]
i=3 => e!  ( you missed the "d" cos it was shifted to the left

你应该i--每次拼接数组