我有这样的对象的json数组,我将其显示为html表,在表上方,有一个搜索输入,产生搜索项。
[
{
"id": 1,
"title": "my frig closed",
"description": "closed frig pla ola pla",
"point": 8989,
"user_id": 4,
"created_at": "2019-11-23T19:54:46.000Z",
"updated_at": "2019-11-23T19:54:46.000Z",
"deleted_at": null
},
{
"id": 4,
"title": "miu you inc",
"description": "closed frig pla ola pla",
"point": 6767,
"user_id": 6,
"created_at": "2019-11-23T19:58:08.000Z",
"updated_at": "2019-11-23T19:58:08.000Z",
"deleted_at": null
}
]
我想在表中搜索输入项到上述数组内部的任何值,然后返回包含该项或该项的子字符串的对象..
[例如,如果onChange
我搜索pl
,我希望所有包含该术语的对象。
使用Object.values检索所有值,并使用filter
和some
来检测字符串是否在任何这些值中都作为子字符串(some
)存在:
您可以创建一个对象来容纳包含要使用的功能的内容,然后在其中添加查找功能。我使用的这种格式即使在像IE 6这样的非常老的浏览器中也能正常工作。我添加了一个lookup和lookupAny以及几个示例。
const data = [
{
"id": 1,
"title": "my frig closed",
"description": "closed frig pla ola pla",
"point": 8989,
"user_id": 4,
"created_at": "2019-11-23T19:54:46.000Z",
"updated_at": "2019-11-23T19:54:46.000Z",
"deleted_at": null
},
{
"id": 4,
"title": "miu you inc",
"description": "closed frig pla ola pla",
"point": 6767,
"user_id": 6,
"created_at": "2019-11-23T19:58:08.000Z",
"updated_at": "2019-11-23T19:58:08.000Z",
"deleted_at": null
}
];
let phrase = "pl";
let result = data.filter(
obj => Object.values(obj).some(
val => typeof val === "string" && val.includes(phrase)
)
);
console.log(result);