今天在做練習的時候,遇到一個需求是通過搜索框對串列進行模糊查詢,
了解到了四種方法,接下來看看,
測驗的資料:
var list=[
{
id:1,
name:"Jenny",
},
{
id:2,
name:"Annie",
},
{
id:3,
name:"Quinn",
}
]
1 indexOf
從頭到尾地檢索字串 item.name,看它是否含有子串 " i ",
如果找到一個 " i ",則回傳 " i "的第一次出現的位置,如果沒有找到,將回傳 -1,
var arr = list.filter(item=>{
return item.name.indexOf("i") >= 0;
})
//遍歷查詢到的name
for (let i = 0; i < arr.length; i++) {
console.log(arr[i].name);
}
//查詢結果: Annie Quinn
2 split
var arr = list.filter(item=>{
return item.name.split("i").length > 1
})
//遍歷查詢到的name
for (let i = 0; i < arr.length; i++) {
console.log(arr[i].name);
}
//查詢結果: Annie Quinn
3 正則運算式test
var arr = list.filter(item=>{
var reg = new RegExp("i");
return reg.test(item.name)
})
//遍歷查詢到的name
for (let i = 0; i < arr.length; i++) {
console.log(arr[i].name);
}
//查詢結果: Annie Quinn
4 正則運算式match
var arr = list.filter(item=>{
var reg = new RegExp("i");
return item.name.match(reg);
})
//遍歷查詢到的name
for (let i = 0; i < arr.length; i++) {
console.log(arr[i].name);
}
//查詢結果: Annie Quinn
總結
相比其他方法,match 方法性能最差,test 的功能會比較強大,代碼也很簡潔,
在不區分大小寫的模糊搜索條件下, test 方法只需在正則運算式中添加修飾符 i 即可實作不區分大小寫,
每天進步一點點
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/301543.html
標籤:其他
