【发布时间】:2021-03-11 10:50:01
【问题描述】:
尝试从对象内的数组中删除所有项目,但收到此错误无法删除 [object Array] 的属性“0”
对象数组:
let tempBrand = [
{
name: "Toshiba",
models:["Toshiba Excite Pro","Toshiba Regza AT300","Toshiba Regza AT1S0","Toshiba Folio
100","Toshiba G500","Toshiba AT720"]
}
]
let tagsData= ["Toshiba Regza AT300","Toshiba Regza AT1S0"]
这就是我想要做的。
for (let i = 0; i < tempBrand.length; i++){
tempBrand[i].models.length = 0;
for (let j = 0; j < tempBrand[i].models.length; j++){
if (tempBrand[i].models[j] !== tagsData[i]) {
delete tempBrand[i].models[j];
}
}
}
【问题讨论】:
-
使用
filter()方法过滤掉你需要的项目。如果要对原始数组进行变异,找到要删除的项目的索引,然后使用splice()方法。 -
tempBrand是一个对象,所以你不能在它上面做for (let i = 0; i < tempBrand.length; i++){。 -
如何过滤项目并将其保存到对象内的同一数组中?任何帮助将不胜感激
-
@GabrielePetrioli 抱歉错字我更正了。它是一个数组而不是一个对象。
-
无论如何你想要的(用于过滤不在
tagsData中的模型)是tempBrand[i].models = tempBrand[i].models.filter( model => tagsData.includes(model))。并且不要将数组的length设置为 0,因为这会清空数组。
标签: javascript arrays reactjs object