我有一个对象数组

let array = [{name: "singpore"}, {name: "French Polynesia"}, {name: "poland"}, {name: "portugal"}]

我正在try 用以下逻辑来实现

 array.filter((item) => {
    return item.name.toLowerCase().includes(searchText);
  });

我正在try 基于"po"进行搜索,当我使用po进行搜索时,我能够以相同的顺序获得所有记录.

但我需要按以下顺序获得结果以匹配前几个字符

电流输出:

[{name: "singpore"}, {name: "French Polynesia"}, {name: "poland"}, {name: "portugal"}]

预期输出:

[{name: "poland"}, {name: "portugal"}, {name: "singpore"}, {name: "French Polynesia"}]

推荐答案

您可以通过使用过滤后的sort()来实现此目的

let array = [
  { name: "singpore" },
  { name: "French Polynesia" },
  { name: "poland" },
  { name: "portugal" }
];

let searchText = "po";

let filteredArray = array
  .filter((item) => item.name.toLowerCase().includes(searchText))
  //compare the index of the search text in each name
  .sort((a, b) => a.name.toLowerCase().indexOf(searchText) - b.name.toLowerCase().indexOf(searchText));

console.log(filteredArray);

Javascript相关问答推荐

React Hooks中useState的同步问题

我的glb文件没有加载到我的three.js文件中

Vega中的模运算符

Angular中计算信号和getter的区别

当作为表达式调用时,如何解析方法decorator 的签名?

如何让npx在windows中运行js脚本?

为什么123[';toString';].long返回1?

检索相加到点的子项

如何在不影响隐式类型的情况下将类型分配给对象?

在SHINY R中的嵌套模块中,不能使用Java代码

当代码另有说明时,随机放置的圆圈有时会从画布上消失

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

FireBase云函数-函数外部的ENV变量

react -原生向量-图标笔划宽度

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

对不同目录中的Angular material 表列进行排序

我如何才能获得价值观察家&对象&S的价值?

在Press Reaction本机和EXPO av上播放单个文件

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?

相对于具有选定类的不同SVG组放置自定义工具提示