前言
最近有這樣一個需求,假如後端傳過來一個list,現在要篩選這個list裏面name爲張三的對象,要求用正則來過濾。
思考
第一個就想到了用正則表達式來過濾,先給出元數據:
let users = [{
id: 1,
name: '張三'
},
{
id: 2,
name: '特朗普'
},
{
id: 3,
nanme: '奧巴馬'
}
];
console.log(JSON.stringify(users));
看看打印的效果:
正則表達式
先使用正則表達式來過濾,代碼如下:
// 正則表達式過濾
let res = users.filter(item => {
if (new RegExp(/\S[\u5f20\u4e09]\S/g).test(JSON.stringify(item)))
return item;
});
console.log(res);
解釋:
\S,表示匹配全部字符
[],表示元字符匹配
\u5f20\u4e09,是張三的Unicode編碼
g,是全局匹配
因爲不能直接匹配漢字,我們需要對漢字進行編碼,給出編碼網站:https://tool.chinaz.com/tools/unicode.aspx
filter
後來發現有更簡單的方法,使用filter方法可以直接進行過濾,這是ES6新加入的,代碼如下:
// filter過濾
users = users.filter((item) => {
return item.name == '張三';
});
console.log(users);
效果圖
最後,我們來看看效果圖:
可以看到,已經成功實現了篩選