如何解决如何用另一个数组过滤一个数组
我有一个对象数组:
const array = [{id: 1,bar: "test" },{id: 2,bar: "test2" },{id: 3,bar: "test3" }]
我有第二个数组,其中包含要从第一个数组中过滤掉的ID:
const ids = [1,2]
如何在ids
中找不到ID的情况下创建新的对象数组。
解决方法
如果您需要对原始数组进行变异,可以这样:
const array = [{id: 1,bar: "test" },{id: 2,bar: "test2" },{id: 3,bar: "test3" }];
const ids = [1,2];
ids.forEach(idToDelete => {
const index = array.findIndex(({ id }) => id === idToDelete);
array.splice(index,1);
});
console.log(array);
如果您需要一个新的阵列,可以这样:
const array = [{id: 1,2];
const result = array.filter(({ id }) => !ids.includes(id));
console.log(result);
您还可以将新数组重新分配给array
变量:
let array = [{id: 1,2];
array = array.filter(({ id }) => !ids.includes(id));
console.log(array);
,
这是一个相当简单的filter
操作
const array = [{id: 1,2];
var result = array.filter( x => !ids.includes(x.id));
console.log(result);
,
使用Array.filter
:
let array = [
{id: 1,bar: "test3" }
];
let ids = [1,2];
let filteredArray = array.filter(row=>!ids.includes(row.id));
console.log(filteredArray);
,
使用lodash的oneliner。
const _ = require("lodash");
let filteredArray = _.remove(array,el=>[1,2].includes(el.id))
,
使用filter
和indexOf
。
const arr = [{ id: 1,bar: 'test' },{ id: 2,bar: 'test2' },{ id: 3,bar: 'test3' }];
const ids = [1,2];
const result = arr.filter(element => ids.indexOf(element.id) === -1);
console.log(result);
,
我们可以使用Array filter()过滤JavaScript中的数组
const myArray = [{id: 1,bar: "test3" }]
const ids = [1,2]
const resultArray = myArray.filter(item => !ids.includes(item.id));
console.log(resultArray);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。