Interview Question
Country: United States
const cars = [
{make: "toyota", color: "red", cat: "suv"},
{make: "honda", color: "black", cat: "sedan"},
{make: "toyota", color: "red", cat: "sedan"},
{make: "nissan", color: "blue", cat: "suv"},
];
const rejects = [
{key: "color", value: "black"},
{key: "color", value: "blue"},
{key: "make", value: "honda"},
];
function rejectByKeyValues(items, rejectKeyValues) {
return items.filter(item => {
let isValid = true;
rejectKeyValues.forEach(keyValue => {
if (item[keyValue.key] === keyValue.value) isValid = false;
});
return isValid;
});
}
let r = rejectByKeyValues(cars, rejects);
console.log(r);
const cars = [
{make: "toyota", color: "red", cat: "suv"},
{make: "honda", color: "black", cat: "sedan"},
{make: "toyota", color: "red", cat: "sedan"},
{make: "nissan", color: "blue", cat: "suv"},
];
const rejects = [
{key: "color", value: "black"},
{key: "color", value: "blue"},
{key: "make", value: "honda"},
];
function rejectByKeyValues(items, rejectKeyValues) {
return items.filter(item => {
return rejectKeyValues.some(function (el) {
return item[el.key] === el.value
})
});
}
let r = rejectByKeyValues(cars, rejects);
console.log(r);
const cars = [
{make: "toyota", color: "red", cat: "suv"},
{make: "honda", color: "black", cat: "sedan"},
{make: "toyota", color: "red", cat: "sedan"},
{make: "nissan", color: "blue", cat: "suv"},
];
const rejects = [
{key: "color", value: "black"},
{key: "color", value: "blue"},
{key: "make", value: "honda"},
];
function rejectByKeyValues(items, rejectKeyValues) {
return items.filter(item => {
return rejectKeyValues.some(function (el) {
return item[el.key] === el.value
})
});
}
let r = rejectByKeyValues(cars, rejects);
console.log(r);
const cars = [
{make: "toyota", color: "red", cat: "suv"},
{make: "honda", color: "black", cat: "sedan"},
{make: "toyota", color: "red", cat: "sedan"},
{make: "nissan", color: "blue", cat: "suv"},
];
const rejects = [
{key: "color", value: "black"},
{key: "color", value: "blue"},
{key: "make", value: "honda"},
];
function rejectByKeyValues(items, rejectKeyValues) {
return items.filter(item => {
return rejectKeyValues.some(function (el) {
return item[el.key] === el.value
})
});
}
let r = rejectByKeyValues(cars, rejects);
console.log(r);
I guess we just need to remove rejects, no need to go through items one by one?
- Ola February 07, 2019So if we turn array into dictionary, that would be easier, wouldn't it?