Javascript 按对象数组过滤值数组';s值

Javascript 按对象数组过滤值数组';s值,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,在Javascript中,我们有一个数组: let arr1 = [1, 2, 3, 4, 5]; …和一组对象: let arr2 = [ {name: "banana", id: 1}, {name: "mango", id: 3} ]; 我想从arr1中删除所有元素,其中arr2的id=arr1的值并返回如下数组: [2, 4, 5] 这是我尝试过的,但似乎不起作用 let newArr = arr1.filter( x => !arr2.in

在Javascript中,我们有一个数组:

let arr1 = [1, 2, 3, 4, 5];
…和一组对象:

let arr2 = [ {name: "banana", id: 1},
             {name: "mango", id: 3} ];
我想从
arr1
中删除所有元素,其中
arr2
的id=
arr1
的值并返回如下数组:

[2, 4, 5]
这是我尝试过的,但似乎不起作用

let newArr = arr1.filter(
    x => !arr2.includes(e => e.id === x)
)

我怎样才能做到这一点?我可以使用
lodash
以及ES6

您可以先创建id和年龄的临时值,然后将
filter()
includes()

让arr1=[1,2,3,4,5];
让arr2=[{name:“banana”,id:1},
{姓名:“芒果”,年龄:3}];
设temp=arr2.map(i=>i.id | | i.age);
设res=arr1.filter(i=>!temp.includes(i));
控制台日志(res)
方法
.includes()
不允许向其中传递方法来定义相等性。您可以改为使用,它允许您指定:

const arr1=[1,2,3,4,5];
常数arr2=[
{姓名:“香蕉”,id:1},
{姓名:“芒果”,id:3}
];
const newArr=arr1.filter(x=>!arr2.some(e=>e.id==x))

控制台日志(newArr)您的尝试是什么?
let arr1 = [1, 2, 3, 4, 5];

let arr2 = [ {name: "banana", id: 1},
             {name: "mango", id: 3} ];

arr1.map((item,index) => 
  arr2.map(object => {
    if(item == object.id) arr1.splice(index,1)
  })
)

console.warn(arr1) /// output [2, 4, 5]