javascript - 从基于另一个数组的数组中删除对象

标签 javascript jquery arrays

这是我的第一个数组的结构:

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/

相关文章:

php - Laravel - 更新内容错误 Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException

javascript - 从 JSON 自动生成 HTML

javascript - document.writeln 不写入新行

javascript - 使用脚本从客户端发送http post并在NODEJS中获取请求

jquery - 如何将 Logo 放在 Bootstrap 导航栏中

Javascript 查找并替换 src 变量

java - 复制数组并使用 printall() 方法将其大小加 1 以返回新数组中的所有 int

javascript - 使用回调在数组项上链接多个异步函数的正确方法

javascript - 返回键不适用于许多文本区域

php - 如何在php中将数据推送到数组中