Javascript 在多个值之后过滤

Javascript 在多个值之后过滤,javascript,arrays,json,typescript,filter,Javascript,Arrays,Json,Typescript,Filter,我有一个模式,用于根据过滤器过滤项目,我的问题是,我可以给他们作为过滤器,只有标题,而我也想给不同的文本输入的作者和年份 这是我的modal.ts函数,仅用于过滤标题(我还想过滤标题、作者和年份) 这是我的json示例: [ { "id":"1", "author": "Chinua Achebe", "country": "Nigeria", "imageLink": "images/things-fall-apart.jpg", "language": "En

我有一个模式,用于根据过滤器过滤项目,我的问题是,我可以给他们作为过滤器,只有标题,而我也想给不同的文本输入的作者和年份

这是我的modal.ts函数,仅用于过滤标题(我还想过滤标题、作者和年份)

这是我的json示例:

[
 {
   "id":"1",
   "author": "Chinua Achebe",
   "country": "Nigeria",
   "imageLink": "images/things-fall-apart.jpg",
   "language": "English",
   "link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n",
   "pages": 209,
   "title": "Things Fall Apart",
   "year": 1958
 }
]

您可以对所有要筛选的字段进行筛选,并测试连接的字符串:

this.filteritems = this.items.filter(item 
  => (item.title + item.author + item.year).toLowerCase().indexOf(this.searchTerm.toLowerCase()) > -1);})

为了便于阅读,我建议使用如下内容:

filterItems() {
  const searchTerm = this.searchTerm.toLowerCase();

  this.filterItems = this.items.filter(item =>
       item.title.toLowerCase().includes(searchTerm)
    || item.author.toLowerCase().includes(searchTerm)
    || item.years == searchTerm)
}
这种方法可读性很强,因为我们可以准确地看到我们过滤的内容


另外,这是的文档。

试试这个:

//筛选输入字段对象
变量filterData={
“标题”:“你不知道的事情”,
“作者”:“Rohit Jindal”,
“年份”:1953年
};
//数据对象
可变项目=[
{
“id”:“1”,
“作者”:“Chinua Achebe”,
“国家”:“尼日利亚”,
“imageLink”:“图像/事物分解.jpg”,
“语言”:“英语”,
“链接”:https://en.wikipedia.org/wiki/Things_Fall_Apart\n“,
“页数”:209页,
“标题”:“事情会分崩离析”,
“年份”:1958年
},{
“id”:“2”,
“作者”:“Rohit Jindal”,
“国家”:“尼日利亚”,
“imageLink”:“图像/事物分解.jpg”,
“语言”:“英语”,
“链接”:https://en.wikipedia.org/wiki/Things_Fall_Apart\n“,
“页数”:209页,
“标题”:“你不知道的事情”,
“年份”:1953年
},{
“id”:“3”,
“作者”:“作者姓名”,
“国家”:“尼日利亚”,
“imageLink”:“图像/事物分解.jpg”,
“语言”:“英语”,
“链接”:https://en.wikipedia.org/wiki/Things_Fall_Apart\n“,
“页数”:209页,
“标题”:“欢迎使用JavaScript”,
“年份”:1947年
}
];
//检查所有三个过滤器数据并给出输出的逻辑
var filteredItems=items.filter(obj=>{
if((obj.title.toLowerCase().indexOf(filterData.title.toLowerCase())>-1)&&
(obj.author.toLowerCase().indexOf(filterData.author.toLowerCase())>-1)&&
(对象年份==过滤器数据年份)){
返回obj;
}
});

console.log(filteredItems)我有3个输入文本,我只能在此方法中应用一个ng模型。我有searchTerm、searchAuthor、searchYears
filterItems() {
  const searchTerm = this.searchTerm.toLowerCase();

  this.filterItems = this.items.filter(item =>
       item.title.toLowerCase().includes(searchTerm)
    || item.author.toLowerCase().includes(searchTerm)
    || item.years == searchTerm)
}