我有一个对象,其中包含一个数组的对象,而我会从create数组中删除一些对象。我希望能够同时删除多个对象。我尝试了拼接,但当我删除时,它被写为未定义。下面是我代码:我想删除关闭,crea,日志,表和id。基本上与拼接我删除了一切,但“表”字段是在中间,所以我不知道如何
hjqgdpho1#
splice()方法会传回数组中移除的项目,而slice()方法会传回数组中选取的元素,做为新的数组对象。您可以使用delete operator或filter()
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)
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);
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)
nxagd54h5#
您可以使用函数Array.prototype.filter来筛选出不符合条件的元素。函数filter返回一个包含满足条件的元素的新数组。第一个
Array.prototype.filter
filter
yqhsw0fo6#
有几种方法可以做到这一点:array.pop()-从Array的末尾删除。array.splice()-从特定数组索引中删除。array.shift()-从Array的开头移除。array.slice()-删除不必要的项目并传回必要的项目。array.filter()-允许您以编程方式从Array中删除元素
array.pop()
array.splice()
array.shift()
array.slice()
array.filter()
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)
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 )
8条答案
按热度按时间hjqgdpho1#
splice()方法会传回数组中移除的项目,而slice()方法会传回数组中选取的元素,做为新的数组对象。
您可以使用delete operator或filter()
91zkwejq2#
这里我是根据值删除重复对象,您可以根据需要编辑此代码删除多个对象。
of1yzvn43#
**注意:**问题代码中最后一个元素后缺少结束数组标记].
我不知道你对Splice做了什么尝试,如果它返回 undefined,但是这里有一个工作解决方案,创建一个新数组,删除前2个索引值上的元素。
fhg3lkii4#
您可以使用filter来完成此操作,我创建了名为“removeFieldFromArray”的函数,它将接受两个参数。
1.需要修改的数组(在您的情况下为obj2.createValues)
1.将包含要删除的字段的数组在您的示例中:['off',' crea','log',' table','ID']函数将返回修改后的数组,该数组不包含您在第二个参数中传递的字段。
函数如下:
只需像这样覆盖obj2.createValues:
nxagd54h5#
您可以使用函数
Array.prototype.filter
来筛选出不符合条件的元素。函数
filter
返回一个包含满足条件的元素的新数组。第一个
yqhsw0fo6#
有几种方法可以做到这一点:
array.pop()
-从Array的末尾删除。array.splice()
-从特定数组索引中删除。array.shift()
-从Array的开头移除。array.slice()
-删除不必要的项目并传回必要的项目。array.filter()
-允许您以编程方式从Array中删除元素我建议使用filter方法,它将返回一个新的数组,给出其中的每个条件。
slwdgvem7#
这里有一种使用循环的方法。
9rygscc18#
**编辑:**希望这篇文章对您有所帮助