Рассмотрим следующий пример:Lodash: фильтровать вложенный объект по нескольким свойствам
var products = {
"Products": [{
"Title": "A",
"Categories": [{
"Name": "Type",
"Properties": ["Type 1", "Type 2", "Type 3"]
}, {
"Name": "Market",
"Properties": ["Market 1", "Market 2", "Market 3", "Market 4"]
}, {
"Name": "Technology",
"Properties": ["Tech 1", "Tech 2"]
}]
}, {
"Title": "B",
"Categories": [{
"Name": "Type",
"Properties": ["Type 1", "Type 3"]
}, {
"Name": "Market",
"Properties": "Market 1"
}, {
"Name": "Technology",
"Properties": ["Tech 1", "Tech 3"]
}]
}, {
"Title": "C",
"Categories": [{
"Name": "Type",
"Properties": ["Type 1", "Type 2", "Type 3"]
}, {
"Name": "Market",
"Properties": ["Market 2", "Market 3"]
}, {
"Name": "Technology",
"Properties": ["Tech 2", "Tech 3"]
}]
}]
}
Я пытаюсь фильтровать продукты по своим свойствам так считают, что я использую массив, чтобы следить за выбранными моих фильтров:
var filters = ['Type 3', 'Tech 1'];
с помощью этих фильтров я хотел бы вернуть продукт а и продукт Б.
настоящее время у меня это:
var flattenedArray = _.chain(products).map('Categories').flatten().value();
var result= _.some(flattenedArray , ['Properties', 'Tech 1']);
Но я зациклился на том, как объединить свойства для комбинированного поиска.
Ваши фильтры всегда относятся к 'Properties'? –
Да, это всегда так. –