直接上代码
const arr = [
{id: "1", en: "Afghanistan", cn: "阿富汗", code: "93"},
{id: "2", en: "Iraq", cn: "伊拉克", code: "964"},
{id: "3", en: "Qatar", cn: "卡塔尔", code: "974"},
{id: "4", en: "China", cn: "中国", code: "933"},
]
/**
* @description: 多字段模糊查询
* @param {[object]} arr 需要处理的对象数组
* @param {string} query 参数
* @param {[string]} key 要查哪些字段
* @return {[object]} 返回符合条件的对象数组, 不传默认查所有key
*/
function search(arr, query, key = []) {
return arr.filter(v =>
Object.values(
Object.fromEntries(
Object.entries(v).filter(item => key.length ? key.includes(item[0]) : true)
)
).some(v => new RegExp(query + "").test(v))
);
}
search(arr, "3")
search(arr, "3", ['id'])