本文介绍在JavaScript中处理两个数组对象时,如何根据特定字段进行筛选。通过结合filter、some和every方法,可以分别获取数组1中与数组2字段匹配的元素,以及未被匹配到的剩余元素。
在JavaScript开发中,经常需要对两个包含对象的数组进行数据比对与筛选。
const arr1 = [
{id: 1, name: 'aaa'},
{id: 2, name: 'bbb'},
{id: 3, name: 'ccc'},
{id: 4, name: 'ddd'}
]
const arr2 = [
{uid: 2, uname: 'eee'},
{uid:4, uname: 'fff'}
]实现逻辑是遍历第一个数组,判断其元素是否在第二个数组中存在对应的字段匹配值,并返回所有符合条件的第一个数组元素。
/**
* 两个数组对象通过某一字段比较返回数组1中符合条件的
* @param arr1 数组1
* @param arr2 数组2
* @returns {*}
*/
function fun1(arr1, arr2) {
return arr1.filter(v => arr2.some(val => val.uid === v.id))
}
console.log(fun1(arr1, arr2))执行上述逻辑后,控制台输出匹配到的元素集合。

另一种常见需求是获取第一个数组中,在第二个数组里找不到对应字段匹配值的剩余元素。
/**
* 两个数组对象通过某一字段比较返回数组1中剩余的
* @param arr1 数组1
* @param arr2 数组2
* @returns {*}
*/
function fun2(arr1, arr2) {
return arr1.filter(v => arr2.every(val => val.uid !== v.id))
}执行排除逻辑后,控制台输出未被匹配的元素集合。

关于JavaScript数组对象筛选的上述方法介绍完毕,更多相关JS数组对象筛选内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!