如何遍历reactjs上的对象数组然后根据条件删除对象

问题描述

我正在使用reactjs,下面有以下数据,我想遍历数组,然后if key === "oneline" or key === "twoline"删除整个对象。

在此示例中,在删除了两个对象(转换)之后,根据上面的描述,它将仅返回数组内部具有03的对象。

const data = [
   {0: {key: "zeroline",door: "zero"}},{1: {key: "oneline",door: "one"}},{2: {key: "twoline",door: "two"}},{3: {key: "threeline",door: "three"}},]

任何帮助都会很有帮助。

解决方法

您可以使用Array#filter将其过滤掉。

const keywords = ['twoline','oneline'],data = [{0: {key: "zeroline",door: "zero"}},{1: {key: "oneline",door: "one"}},{2: {key: "twoline",door: "two"}},{3: {key: "threeline",door: "three"}}];

const res = data.filter((v,i) => keywords.indexOf(v[i].key) === -1);

console.log(res);

,

使用数组过滤器方法。 filter()方法创建一个数组,其中包含所有通过测试的数组元素。 数组过滤器的语法: array.filter(function(currentValue,index,arr),thisValue)

const data = [
  { 0: { key: "zeroline",door: "zero" } },{ 1: { key: "oneline",door: "one" } },{ 2: { key: "twoline",door: "two" } },{ 3: { key: "threeline",door: "three" } },];

let ret = data.filter((x,i) => x[i].key !== "oneline" && x[i].key !== "twoline");
console.log(ret);

,

一种实现方法是:

const result = Object.keys(data).reduce((filtered,key,index) => {
   //Getting specific object of array
   //Example for first: data[0]["0"] === {key: "zeroline",door "zero"}
   const object = data[index][key];
   
   //Check if object key is zeroline or twoline
   if(object.key === "zeroline" || object.key === "twoline"){
     //If it is we push object to array
     filtered.push(object)
    }
   return filtered
},[])