return arr1.filter((ele) =>
arr2.filter((x) => x.id === ele.id).length > 0
)
}
在 chrome 浏览器下测试可行。
答案里为了简洁,使用了箭头函数。主要思路就是利用 Array 的 filter 函数。
该函数接受一个回掉函数作为参数,就是如何过滤想要的内容,满足条件的返回为true。
它并不要求b里的id都在a里,只要是共有的id都会选中。
如果是b里的id 都在a里的话,可以尝试这个方法。
function myFilter2(arr1,arr2) {var ret = []
arr2.forEach(
ele => {
var findEle = arr1.find(x => x.id === ele.id )
// 如果在arr1中找到,添加到arr1中
findEle ? ret.push(findEle) : ''
}
)
return ret
}
这个思路是把b中的每一个id都在a中找一下。
js中有一个函数filter(),可以用来过滤数组中的特定元素;
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
语法 : filter((item, index, arr) =>{ ... })
filter中一共可已设置三个入参:其中item( 必填 )--代表数组中的每个元素,filter会对每个元素进行遍历;
index( 先填 )--每个元素的index;arr( 选填 )--指定要遍历的数组。
要筛选数组中的奇数位元素或者偶数位元素就可以用filte()方法。
例子: