json 从对象数组中删除多个对象

8yparm6h  于 2022-11-26  发布在  其他
关注(0)|答案(8)|浏览(274)

我有一个对象,其中包含一个数组的对象,而我会从create数组中删除一些对象。
我希望能够同时删除多个对象。我尝试了拼接,但当我删除时,它被写为未定义。
下面是我代码:
我想删除关闭,crea,日志,表和id。基本上与拼接我删除了一切,但“表”字段是在中间,所以我不知道如何

hjqgdpho

hjqgdpho1#

splice()方法会传回数组中移除的项目,而slice()方法会传回数组中选取的元素,做为新的数组对象。
您可以使用delete operatorfilter()

91zkwejq

91zkwejq2#

这里我是根据值删除重复对象,您可以根据需要编辑此代码删除多个对象。

let newArray = [];
let removeDuplicate = [];
obj2.createValues.forEach(ele => {
   if (!removeDuplicate.includes(ele.value)) {
      removeDuplicate.push(ele.value);
      newArray.push(ele);
   }
})

const newObj = {...obj2, createValues: newArray}
console.log(newObj)
of1yzvn4

of1yzvn43#

**注意:**问题代码中最后一个元素后缺少结束数组标记].

我不知道你对Splice做了什么尝试,如果它返回 undefined,但是这里有一个工作解决方案,创建一个新数组,删除前2个索引值上的元素。

let obj2 = {
  projectId: 0,
  gridId: 0, 
  createValues : [
  {
   "field": "ID",
   "value": "40212"
  },
  {
  "field": "FLD_STR_101",
  "value": "TEST1"
  },
  {
  "field": "Table",
  "value": "TEST1"
  },
 {
  "field": "hello",
  "value": "TEST1"
 }
  ]
};

const newObj2 = obj2.createValues.splice(2);// will delete first 2 elements
console.log(newObj2);
fhg3lkii

fhg3lkii4#

您可以使用filter来完成此操作,我创建了名为“removeFieldFromArray”的函数,它将接受两个参数。
1.需要修改的数组(在您的情况下为obj2.createValues)
1.将包含要删除的字段的数组在您的示例中:['off',' crea','log',' table','ID']函数将返回修改后的数组,该数组不包含您在第二个参数中传递的字段。
函数如下:

function removeFieldFromArray(array, fields) {
     return array.filter(r => !fields.includes(r.field))
 }

只需像这样覆盖obj2.createValues:

obj2.createValues = removeFieldFromArray(obj2.createValues, ['off', 'crea', 'log', 'table', 'ID'])

 console.log(obj2)
nxagd54h

nxagd54h5#

您可以使用函数Array.prototype.filter来筛选出不符合条件的元素。
函数filter返回一个包含满足条件的元素的新数组。
第一个

yqhsw0fo

yqhsw0fo6#

有几种方法可以做到这一点:
array.pop()-从Array的末尾删除。
array.splice()-从特定数组索引中删除。
array.shift()-从Array的开头移除。
array.slice()-删除不必要的项目并传回必要的项目。
array.filter()-允许您以编程方式从Array中删除元素

  • appdividend.com
    我建议使用filter方法,它将返回一个新的数组,给出其中的每个条件。
slwdgvem

slwdgvem7#

这里有一种使用循环的方法。

let obj2 = {
                projectId: 0,
                gridId: 0, 
                createValues : [
                {
                 "field": "ID",
                 "value": "40212"
                },
                {
                "field": "FLD_STR_101",
                "value": "TEST1"
                },
                {
                "field": "FLD_STR_101",
                "value": "TEST1"
                },
                {
                "field": "FLD_STR_101",
                "value": "TEST1"
                },
                {
                "field": "Table",
                "value": "TEST1"
                },
                {
                "field": "FLD_STR_101",
                "value": "TEST1"
                },
                {
                "field": "log",
                "value": "TEST1"
                },
               {
                "field": "crea",
                "value": "TEST1"
               },
               {
                "field": "off",
                "value": "TEST1"
                },
               ]

        };

let array = []
obj2.createValues.forEach((value, index) => {
  
  if(value.field !== "ID" && value.field !== "log" && value.field !== "off" && value.field !== "crea" &&       value.field !== "Table") {
    array.push(value)
  }
 

})

obj2.createValues = array
console.log(obj2)
9rygscc1

9rygscc18#

**编辑:**希望这篇文章对您有所帮助

let obj2 = {
            projectId: 0,
            gridId: 0, 
            createValues : [
            {
             "field": "ID",
             "value": "40212"
            },
            {
            "field": "FLD_STR_101",
            "value": "TEST1"
            },
            {
            "field": "FLD_STR_101",
            "value": "TEST1"
            },
            {
            "field": "FLD_STR_101",
            "value": "TEST1"
            },
            {
            "field": "Table",
            "value": "TEST1"
            },
            {
            "field": "FLD_STR_101",
            "value": "TEST1"
            },
            {
            "field": "log",
            "value": "TEST1"
            },
           {
            "field": "crea",
            "value": "TEST1"
           },
           {
            "field": "off",
            "value": "TEST1"
            }
           ]

    };

let filterValue = obj2.createValues.filter(function(em) {
    return (em.field !== "ID" &&
            em.field !== "Table" &&
            em.field !== "log" &&
            em.field !== "crea" &&
            em.field !== "off")
            
})

console.log('filterValue  : ', filterValue )

相关问题