Arrays intersection of IDs
by igalst
JavaScript
var options = [{
name: 'a',
optionsIds: [20, 26, 34]
}, {
name: 'b',
optionsIds: [20, 24, 34]
}, {
name: 'b2',
optionsIds: [24, 20, 11]
}, {
name: 'c',
optionsIds: [21, 24, 30]
}, {
name: 'd',
optionsIds: [21, 22, 23]
}];
var selectedIds = [20, 24];
var findItersection = function (options, selectedIds) {
var goodOptions = [];
selectedIds.forEach(function (selectedId) {
var optionsForLoop = goodOptions.length ? goodOptions : options;
goodOptions = [];
optionsForLoop.forEach(function (option, optionIndex) {
if (option.optionsIds.indexOf(selectedId) < 0) {
return;
}
goodOptions.push(option);
});
});
return goodOptions;
};
var itersection = findItersection(options, selectedIds);
console.log(itersection); // expecting: [{ name:'b', optionsIds: [20, 24, 34] }, { name:'b2', optionsIds: [24, 20, 11] }]