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

标签 javascript arrays ecmascript-6

我有一个数组列表,如下所示:

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

关于javascript - JS如何过滤数组中顶部索引处的匹配元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104153/

相关文章:

javascript - 为什么在 “LocalStorage” 中添加/删除元素不起作用?

javascript - 如何在文本输入旁边创建两个垂直堆叠的按钮

javascript - React - 未处理的拒绝(TypeError): _this4. getNotes 不是函数

java - 字符串(字节数组)到字节数组

php explode : split string into words by using space a delimiter

javascript - 从构造函数调用类方法

php - 是否有可以从共享主机环境实际运行的任何 PHP(或类似)版本的 Google Caja?

javascript - 沿标签更改线条颜色 Chart.js

c - 结构成员的嵌套循环赋值

javascript - typescript 私有(private)只读与类 const 之外