【发布时间】:2023-04-01 16:00:01
【问题描述】:
我有一个对象数组:
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']},尽管不符合“忠诚”的气质,Golden 仍将返回真实状态
这里有更好的解决方案的想法吗?提前致谢!!
【问题讨论】:
标签: javascript sorting underscore.js