【发布时间】:2021-01-12 04:36:42
【问题描述】:
我正在通过对象数据响应进行搜索并检测它是否包含“wdt”。这很好用;但是,我正在努力销毁或删除找到的项目,使其无法使用我的data 进行处理。
不相信在 JavaScript 中没有像 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;
【问题讨论】:
-
尝试从
data[i].splice(index, 1)中删除[i] -
除非出于某种原因您需要改变原始对象,否则这就是
array.filter的用途。 (它吓到我修改对象同时迭代它。) -
你能用一些数据和工作示例重现问题吗?
-
@RainbowRandolph 在下面添加了一个带有演示 sn-p 的答案。如果您需要修改有问题的对象,您可以在过滤器之后链接 map 调用。
-
创建一个新对象并添加您不会删除的值。我认为是最好的选择,因为您在 for 中使用相同的变量修改长度。
标签: javascript arrays for-loop indexof splice