这是我的第一个数组的结构:
var myArray = [1,Firstname,Lastname];
我的第二个数组由具有属性的对象组成:
var mySecondArray = [object, object, object];
当您展开它时,在第一个数组对象上它将显示如下内容:
Id = 1
FirstName = Test
LastName = TestLastName
如果该对象与第一个数组具有相同的 id
,我需要删除该对象。我尝试使用这个但没有运气:
// if condition
myArray.splice(mySecondArray[x].ID, 1);
有什么想法吗?
编辑
这就是整个想法。我有所有项目(对象)的数组,并且有无效项目的数组(在本例中这是字符串数组)
var originalLength = validRowsArray.length;
for (var x = 0; x < invalidRowsArray.length; x++) {
for (var y = 0; y < originalLength; y++) {
if (validRowsArray[x].ID != invalidRowsArray[y][0]) { // 0 is the position of ID
validRowsArray.splice(validRowsArray[x], 1);
}
}
}
最佳答案
使用反向 for
循环确保删除时不会丢失元素。
然后使用some
检查当前元素是否存在于无效数组中。
splice使用索引作为第一个参数,然后算作第二个参数。
var invalidRowsArray = [
[2, 'foo2', 'bar2']
];
var validRowsArray = [{
Id: 1,
FirstName: 'foo',
LastName: 'bar'
}, {
Id: 2,
FirstName: 'foo2',
LastName: 'bar2'
}, {
Id: 3,
FirstName: 'foo3',
LastName: 'bar3'
}];
for (var i = validRowsArray.length; i--;) {
var exist = invalidRowsArray.some(function(element) {
return element[0] == validRowsArray[i].Id;
})
if (exist)
validRowsArray.splice(i, 1)
}
console.log(validRowsArray);
关于javascript - 从基于另一个数组的数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055781/