在javascript json数组中搜索任何值,例如搜索字词

问题描述 投票:-1回答:2

我有这样的对象的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,我希望所有包含该术语的对象。

javascript arrays json ecmascript-6
2个回答
1
投票

使用Object.values检索所有值,并使用filtersome来检测字符串是否在任何这些值中都作为子字符串(some)存在:


1
投票

您可以创建一个对象来容纳包含要使用的功能的内容,然后在其中添加查找功能。我使用的这种格式即使在像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);
© www.soinside.com 2019 - 2024. All rights reserved.