#lodash
Вопрос:
const buttons = [
{ id: 1, text: 'First' },
{ id: 2, text: 'Second' },
{ id: 3, text: 'Third' }
]
const activeButtonIds = [1, 3]
Используя lodash, я хочу отфильтровать все кнопки с идентификаторами, не включенными в activeButtonIds = [1, 3]
них .
Очевидный способ сделать это -:
_.filter(buttons, ({ id }) => _.includes(activeButtonIds, id))
Но мне было интересно, есть ли более простой способ добиться того же самого? Встроенная функция для этого в lodash?
Ответ №1:
Вы можете использовать _.intersectionWith()
для поиска элементов, включенных в оба массива, с помощью функции компилятора:
const buttons = [{"id":1,"text":"First"},{"id":2,"text":"Second"},{"id":3,"text":"Third"}]
const activeButtonIds = [1, 3]
const result = _.intersectionWith(buttons, activeButtonIds, (button, activeId) =>
button.id === activeId
)
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG ljU96qKRCWh quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>