Лодаш найти массив в массиве - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть массив, который выглядит следующим образом:

   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 } 
            ]

Я просто не знаю, как это сделать.TY

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Вы можете использовать _.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>
0 голосов
/ 24 февраля 2019

Вот ответ, используя VanillaJS

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)

Обычно вы применяете filter к roles и используете includes, чтобы увидеть, существует ли значение в needtoFind

...