从其他数组jquery中删除多个数组

时间:2018-08-27 07:16:23

标签: javascript jquery

我有2个这样的数组

arr = ["9138172", "9138214", "9138238"]
array = ["9138172", "9138238"]

如何从array中删除arr中的值? 我想获得

arr = ["9138214"]

也许我可以使用splice()吗?

3 个答案:

答案 0 :(得分:3)

您可以使用Array.forEach()循环到项目数组,然后检查array数组中是否存在每个项目。如果是这样,请使用splice()。使用简单的功能和indexOf(),因为它可以在旧的浏览器和IE中使用。

var arr = ["9138172", "9138214", "9138238"];
var array = ["9138172", "91382142"];
var i = arr.length;
while (i--) {
  if (array.indexOf(arr[i]) !== -1) {
    arr.splice(i, 1);
  }
}
console.log(arr);

答案 1 :(得分:2)

您可以使用.filter()

这里是一个例子:

var arr = ["9138172", "9138214", "9138238"];
var array = ["9138172", "9138238"];

arr = arr.filter(e => !array.includes(e));

console.log(arr)

上面的代码仅过滤arr数组,并仅保留array中不存在的元素。我使用的.includes()函数可在这些数组上使用,因为它们包含字符串,如果要处理对象,则需要找到其他方法来检查array是否包含元素。

答案 2 :(得分:0)

如果想破破烂烂,可以通过差分函数轻松完成此操作:

https://lodash.com/docs/4.17.10#difference

import {difference} from 'lodash';


arr = ["9138172", "9138214", "9138238"]
array = ["9138172", "9138238"]

console.log(difference(arr, array));