Lodash中如何在数组中查找另一个数组?

3

我有一个类似于这样的数组:

   var roles = [ 
           { "label": "Super Auditor", "value": 4 }, 
           { "label": "Super Finance Officer", "value": 3 }, 
           { "label": "Super Manager", "value": 2 }, 
           { "label": "Super Admin", "value": 1 } 
   ]

我需要查找是否存在于数组中,并获取该对象。
var needToFind = [4, 1]

期望结果:

var results =[
              { "label": "Super Auditor", "value": 4 }, 
              { "label": "Super Admin", "value": 1 } 
            ]

我只是不知道如何去做。谢谢。

2个回答

2

以下是使用纯JavaScript的最初回答:

const roles = [ 
           { "label": "Super Auditor", "value": 4 }, 
           { "label": "Super Finance Officer", "value": 3 }, 
           { "label": "Super Manager", "value": 2 }, 
           { "label": "Super Admin", "value": 1 } 
];


const needToFind = [4, 1];

const results = roles.filter(obj => needToFind.includes(obj.value))

console.log(results)

基本上,您可以在roles上应用filter,并使用includes来查看needtoFind中是否存在该值。"Original Answer"翻译成"最初的回答"。

2
您可以使用_.intersectionWith()函数:

var roles = [ 
  { "label": "Super Auditor", "value": 4 }, 
  { "label": "Super Finance Officer", "value": 3 }, 
  { "label": "Super Manager", "value": 2 }, 
  { "label": "Super Admin", "value": 1 }
]

var needToFind = [4, 1]

var result = _.intersectionWith(roles, needToFind, (a, b) => a.value === b)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接