【问题标题】:Remove all items except specific from array inside object从对象内部的数组中删除除特定项之外的所有项目
【发布时间】: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 &lt; tempBrand.length; i++){
  • 如何过滤项目并将其保存到对象内的同一数组中?任何帮助将不胜感激
  • @GabrielePetrioli 抱歉错字我更正了。它是一个数组而不是一个对象。
  • 无论如何你想要的(用于过滤不在tagsData中的模型)是tempBrand[i].models = tempBrand[i].models.filter( model =&gt; tagsData.includes(model))。并且不要将数组的length 设置为 0,因为这会清空数组。

标签: javascript arrays reactjs object


【解决方案1】:

我无法准确理解您想要实现的目标,但这是我从您的问题中理解的实现。 正如您更新的问题,这里是更新的答案。 如果您想坚持使用迭代方法,您可以使用该方法,或者如 cmets 中所述,您可以使用 es6 方法进行函数式编码。

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++)
for(let j=0 ; j<tempBrand[i].models.length;j++){
    if(tagsData.includes(tempBrand[i].models[j]))
    {
      console.log({item : tempBrand[i].models[j]});
      tempBrand[i].models.splice(j, 1); 
     }   
}
console.log({tempBrand})

【讨论】:

  • 在不断迭代数组时不要从数组中删除项目。
  • @GabrielePetrioli 谢谢你的建议。我只是使用了他上面分享的示例,以便他可以更好地理解,如果他不使用 es6。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2021-01-10
  • 2021-11-01
  • 2021-08-01
  • 1970-01-01
相关资源
最近更新 更多