如何在JS数组的顶部索引处过滤匹配的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JS数组的顶部索引处过滤匹配的元素相关的知识,希望对你有一定的参考价值。

我有如下数组列表:

 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; }

以上是关于如何在JS数组的顶部索引处过滤匹配的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在多个数组的索引处保存多个元素?

js简洁代码片段

如何在数组的索引0处推送元素[重复]

如何在 javascript/jquery 中使用空元素在第三个索引处创建任何数组,例如 ['Aarav', 10, '', , '']

js数组删除某个元素

在字符串中的 Y 索引处查找 X 字符并使用此信息过滤数组