Javascript 如何使用lodash在收集中找到特定结果?

Javascript 如何使用lodash在收集中找到特定结果?,javascript,lodash,Javascript,Lodash,我正在研究lodash…如果在特定数组中匹配id mind,我想找到特定数组…这是我的收藏:- [ { name: 'Thor', id: [ '5a1676da509a93571c15501f', '59ffb40f62d346204e09c9ad', '5a0a92e01bb28a276abfa548' ] }, { name: 'Loki', id: [ '59ffb40f62d346204e09c9ad',

我正在研究lodash…如果在特定数组中匹配id mind,我想找到特定数组…这是我的收藏:-

[ { name: 'Thor',
    id: 
     [ '5a1676da509a93571c15501f',
       '59ffb40f62d346204e09c9ad',
       '5a0a92e01bb28a276abfa548' ] },
  { name: 'Loki',
    id: 
     [ '59ffb40f62d346204e09c9ad',
       '59ffb41b62d346204e0a03ed',
       '59ffb40e62d346204e09c298',
       '5a65853af431924e73c401fe' ] } ]
我试图找到的是我给出的id,如果它应该在集合上面找到它,那么它应该返回该集合…例如..如果我有id:59ffb40e62d346204e09c298,那么它应该返回2个集合

b =  _.find(upperArray,(candidate) => {
            //  console.log(candidate)
           return _.find(candidate.id,id)//here actor_id is given id
            })

但它不返回2个集合。如果未找到任何匹配元素,则应返回空白数组,如果找到,则应返回数组集合。我做错了什么地方???

使用可以使用本机数组方法实现相同的效果

变量id=59ffb40e62d346204e09c298; var arr=[{ 名字:“雷神”, id:[5a1676da509a93571c15501f', “59ffb40f62d346204e09c9ad”, ‘5a0a92e01bb28a276abfa548’ ] }, { 名字:“洛基”, id:['59ffb40f62d346204e09c9ad', “59ffb41b62d346204e0a03ed”, “59ffb40e62d346204e09c298”, “5a65853af431924e73c401fe” ] } ] 函数getMatchedCollectionid{ //筛选器将返回匹配条件的新数组 返回arr.filterfunctionitem{ //indexOf用于检查元素是否存在 如果item.id.indexOfid!=-1{ 退货项目 } } }
console.loggetMatchedCollectionid@Barmar是正确的,您应该使用wk.filter。试试下面的方法

var upperArray=[ { 名字:“雷神”, 身份证:[ “5a1676da509a93571c15501f”, “59ffb40f62d346204e09c9ad”, ‘5a0a92e01bb28a276abfa548’ ] }, { 名字:“洛基”, 身份证:[ “59ffb40f62d346204e09c9ad”, “59ffb41b62d346204e0a03ed”, “59ffb40e62d346204e09c298”, “5a65853af431924e73c401fe” ] } ]; 函数findByIdidToFind{ return uu.filterupperArray,functioncandidate{ 返回u.includescandidate.id,idToFind; }; } var b=findById'59ffb40e62d346204e09c298'; console.logb;
如果要返回所有匹配项,请使用u.filter,而不是u.find。为什么要返回2个集合?该ID只匹配Loki,而不匹配Thor。但它不返回数组…问题是u.find的工作方式与您认为的不一样。查找[a,b],b不返回任何内容。好的,谢谢。。。。我明白了…我还得从find回来…谢谢…:-