indexOfおよびincludesメソッドに加えて、matchメソッドを見てみましょう。

1.以前は、元のindexOfメソッドを使用して単純なファジー検索関数を処理し、ES6でincludesメソッドを開発しました。実際、効果は同じですが、includesメソッドはブール値を返します。 、その後、次のような問題があります

// indexOf()
let str = 'AbcdEFG';
str.indexOf('bc');//1
str.indexOf('bcD');//-1 
// includes()
str.includes('bc');//true
str.includes('bcD');//false

上記の出力結果から結論を導き出すことができます。ユーザーが入力した文字をtoLowerCase()メソッドとtoUpperCase()メソッドで特別に変換し、判断を検索する人がいるはずです。少なくとも私は初心者としてここに来ました。の。

2.以下の一致方法を見てみましょう。

match(searchvalue || regexp)このメソッドには、取得した文字列またはRegExpオブジェクトのいずれかのパラメーターが1つだけあります。取得する文字列のみを渡した場合、効果は上記の2つのメソッドと同じであるため、 RegExpオブジェクトを使用して取得

//还是继续使用上面的str变量,这次我们在RegExp对象加上 /i 忽略大小写功能

// 正常检索
str.match(new RegExp('Abc', 'i'));//["Abc", index: 0, input: "AbcdEFG", groups: undefined]
// 忽略大小写检索
str.match(new RegExp('ABC', 'i'));//["Abc", index: 0, input: "AbcdEFG", groups: undefined]
// 无法正常检索
str.match(new RegExp('ABCABC', 'i'));//null

上記のmatchメソッドで取得した結果を使用して、配列の長さで取得が成功したかどうか、または配列であるかどうかを判断できます。以下のデモをご覧ください。


const arr = [{
    
    name:'测试_test'},{
    
    name:'后_端sTE'},{
    
    name:'前端Stb'},{
    
    name:'运维pp_k'},{
    
    name:'_安卓AteSTdn'},{
    
    name:'苹果Apple'}]
let value = 'Te';
let res = arr.filter(item => {
    
    
    let len = item.name.match(new RegExp(value,'i'));
    return len&&len.length&&item;
})
console.log(res);//[{name: "测试_test"},{name: "后_端sTE"},{name: "_安卓AteSTdn"}]

おすすめ

転載: blog.csdn.net/hzw29106/article/details/109363595