Javascript 在多个值之后过滤
我有一个模式,用于根据过滤器过滤项目,我的问题是,我可以给他们作为过滤器,只有标题,而我也想给不同的文本输入的作者和年份 这是我的modal.ts函数,仅用于过滤标题(我还想过滤标题、作者和年份) 这是我的json示例: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
[
{
"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)
}