У меня есть массив объектов:
const breeds=[{name: 'Golden', temperament: ['friendly', 'kind', 'smart']},{name: 'Husky', temperament: ['alert', 'loyal', 'gentle']},{name: 'Yorkshire Terrier', temperament: ['bold', 'independent', 'kind']}]
Я бы хотел отсортировать их по выбранному «темпераменту».Допустим, пользователь выбрал «добрый» и «дружественный», он должен возвращать только «Золотой».
Я использую JavaScript и подчеркивание, и это то, что я пробовал до сих пор:
//selected is an array of selected temperaments
//breeds is the array of objects
function filterTemperaments(selected, breeds) {
return _.filter(breeds, function (breed) {
if (!breed.temperament) breed.temperament = "";
const breedList = breed.temperament;
return breedList.includes(...selected);
}, selected);
}
Похоже, что возвращаются только те породы, которые соответствуют первому темпераменту в выбранном массиве.Например, если выбрано ['kind', 'loyal']
, а порода - {name:'Golden', temperament: ['kind', 'smelly']}
, Голден все равно вернется как истинный, несмотря на несоответствие «лояльному» темпераменту
Есть какие-нибудь мысли по поводу лучшего решения здесь?Заранее спасибо!!