请教大神,js如何根据id对对象数组筛选

比如源数组vara=[{id:1,key:qqq},{id:2,key:hhh},{id:3,key:fff},{id:4,key:uuu}],然后根据varb=[{id... 比如源数组
var a =[
{id: 1, key: qqq},
{id: 2, key: hhh},
{id: 3, key: fff},
{id: 4, key: uuu}
],然后根据
var b=[
{id: 1},
{id: 2}
]筛选出来结果为
[
{id: 1, key: qqq},
{id: 2, key: hhh}
]。数组a和b的长度不固定,已经确定b数组的id值在a中都有
展开
 我来答
宇德高辉2
2018-05-06 · TA获得超过2623个赞
知道小有建树答主
回答量:538
采纳率:100%
帮助的人:55.9万
展开全部
function myFilter(arr1,arr2) {
    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中找一下。

草原上之狼
高粉答主

2018-05-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.9万
采纳率:93%
帮助的人:4062万
展开全部
function myFilter(arr1,arr2) {    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中找一下。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式