Вы можете сделать это без lodash, используя .filter()
и проверьте, включен ли текущий массив url
в массив strings
следующим образом:
const collection = [{url: '/string/'}, {url: '/string-2/'}];
const strings = ['/string/'];
const difference = collection.filter(({url}) => strings.includes(url));
console.log(difference);
... или, если каждый url
уникален, более эффективным способом было бы создать Map
, где каждый ключ вкарта url
, которая указывает на ваш объект. Затем .map()
над вашим массивом strings
, например:
const collection = [{url: '/string/'}, {url: '/string-2/'}];
const strings = ['/string/'];
const collection_map = new Map(collection.map(obj => [obj.url, obj]));
const difference = strings.map(str => collection_map.get(str));
console.log(difference);
С помощью lodash вы можете применить ту же логику, что и выше, используя метод _.filter()
с _.includes()
, например:
const collection = [{url: '/string/'}, {url: '/string-2/'}];
const strings = ['/string/'];
const difference = _.filter(collection, obj => _.includes(strings, obj.url));
console.log(difference);
<script src="https://cdn.jsdelivr.net/lodash/4.16.4/lodash.min.js"></script>