function filter( collection , value ,key ){
const getNestedObjectValue = (nestedObject, propertyPath) => {
return propertyPath.reduce((obj, key) =>
(obj && obj[key] !== 'undefined') ? obj[key] : undefined, nestedObject);
};
return collection.filter( item => getNestedObjectValue(item, key) === value);
}
Функция фильтра будет возвращать массив совпадающих объектов при наличии совпадения и пустой массив при отсутствии совпадения
let result = filter( data , "business" , [ "data","address","cat" ] );
console.log(result); // [{"id":1,"data":{"name":"sample1","address":{"cat":"business"}}}]
let result2 = filter( data , "office" , [ "data","address","cat" ] );
console.log(result2); //[{"id":2,"data":{"name":"sample2","address":{"cat":"office"}}},{"id":3,"data":{"name":"sample3","address":{"cat":"office"}}},{"id":4,"data":{"name":"sample4","address":{"cat":"office"}}}]
let result3 = filter( data , "vacation" , [ "data","address","cat" ] );
console.log(result2); // []