javascript - 如何使用 Typescript/Javascript/Angular 4 过滤 JSON 数据?

标签 javascript angular typescript

我有这样的json数据

data :[
{taskname:'chennai',    id:'maa' }
{taskname:'mumbai',     id:'bom' }
{taskname:'delhi',      id:'del' }
....
....
....
{taskname:'salem',      id:'che'}
{taskname:'bengaluru',  id:'blr'}
{taskname:'chavvapet',  id:'chv'}
}]

现在我需要过滤这些数据并返回匹配值(就像自动完成一样)。例如,当我得到值 CH 时,首先我需要检查 ID,然后检查 taskname。所以返回值应该是这样的。 必须顺序 ID 匹配 top,然后 taksname 匹配。

{taskname:'salem',      id:'che'}
{taskname:'chavvapet',  id:'chv'}
{taskname:'chennai',    id:'maa'}

如果我得到值 CHE,那么我需要像这样返回值

{taskname:'salem',      id:'che'  }
{taskname:'chennai',    id:'maa'  }

有人可以告诉我如何使用 typescript 进行过滤吗?

Tried few of this answer , 但没有运气。

最佳答案

试试这段代码

const data = [
{taskname:'chennai',  id:'maa',status:'Submitted'},
{taskname:'mumbai',   id:'bom',status:'Resolved'},
{taskname:'delhi',    id:'del',status:'Submitted'},
{taskname:'salem',    id:'che',status:'In Progress'},
{taskname:'bengaluru',id:'blr',status:'Resolved'},
{taskname:'chavvapet',id:'chv',status:'Submitted'}
];

function filterByString(data, s) {
   return data.filter(e => e.id.includes(s) || e.taskname.includes(s))
       .sort((a,b) => a.id.includes(s) && !b.id.includes(s) ? -1 : b.id.includes(s) && !a.id.includes(s) ? 1 :0);
}

console.log(filterByString(data, "ch"));

关于javascript - 如何使用 Typescript/Javascript/Angular 4 过滤 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48363851/

相关文章:

javascript - 字符串到数组 - javascript

javascript - 使用鼠标事件通过 Javascript 移动图像

javascript - ExtJS 4 获取可观察对象的每个监听器

angular - Jasmine 测试中的模板解析错误,但不是实际的应用程序

angular - 从服务返回的 Observable 的单元测试值(使用异步管道)

javascript - 如何将表行映射为 typescript 中不同接口(interface)的潜在行?

javascript - 为什么移动设备上的本地文件可以跨域脚本?

javascript - 使用 2 个属性过滤 JavaScript 中的数组

javascript - <input type =“text” maxlength =“4” > 不应将逗号和点计入 maxlength

javascript - Angular 2 Facebook 登录