我有如下数组列表:
var arr = ['Ashwin Rathod','Basker Babu','Cherry Spanish','Dravid Mukund'];
我有一个搜索框,如果我搜索'Mukund',那么我应该显示所有结果,前提是包含'Mukund'的字符串应该放在顶部,但在我的情况下,所有结果都按字母顺序排列(从后端)。我使用array.filter做到了这一点,但我想以其他最佳方式做到这一点。有人可以建议我帮忙。谢谢。
这是我尝试过的,
function filterResults() {
const matchedJobList = [],
unMatchedJobList = [];
arr.filter(function(job) {
if (job.toUpperCase().includes(mySearchedString.toUpperCase())) {
matchedJobList.push(job);
} else {
unmatchedJobList.push(job);
}
});
return [...matchedJobList, ...unmatchedJobList];
}
结果:
['Dravid Mukund','Ashwin Rathod','Basker Babu','Cherry Spanish'];
我得到了预期的结果,但希望能得到最好的方法。
替代方法可以是函数reduce
+ unshift
,以便在数组的第一个索引处添加目标字符串。
let arr = ['Ashwin Rathod','Basker Babu','Cherry Spanish','Dravid Mukund'],
target = 'Mukund',
result = arr.reduce((a, c) => {
if (c.toUpperCase().includes(target.toUpperCase())) a.unshift(c);
else a.push(c);
return a;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }