Javascript 如何仅获取与用户输入匹配的对象数组中的项

Javascript 如何仅获取与用户输入匹配的对象数组中的项,javascript,reactjs,sorting,Javascript,Reactjs,Sorting,我有一个响应体,看起来像这样: { "id": "provider-a7d49a99-53c0-4b7c-9be3-8b9efc828f1b", "fullName": "Dr. Tim Lucca, FSE", "firstName": "Tim", "l

我有一个响应体,看起来像这样:

        {
            "id": "provider-a7d49a99-53c0-4b7c-9be3-8b9efc828f1b",
            "fullName": "Dr. Tim Lucca, FSE",
            "firstName": "Tim",
            "lastName": "Lucca",
            "prefix": "Dr.",
            "suffix": "FSE",
            "phone": "(303) 520-4571",
            "state": "CO",
            "doseSpotID": 185012,
            "active": "active",
            "capabilities": {
                "demographic": [
                    "adolescent",
                    "adult",
                    "child"
                ],
                "geographic": [
                    "CO",
                    "TX"
                ],
                "linguistic": [
                    "english",
                    "spanish"
                ],
                "credentialedPayors": null
            },
            "invitePending": false
        },
        {
            "id": "provider-450de310-fcb5-4e71-9d72-b6b320b2eb0a",
            "fullName": "Mr Doc Torr",
            "firstName": "Doc",
            "lastName": "Torr",
            "prefix": "Mr",
            "suffix": "",
            "phone": "(303) 520-4571",
            "state": "CO",
            "doseSpotID": 186856,
            "active": "active",
            "capabilities": {
                "demographic": [
                    "adult",
                    "adolescent",
                    "child"
                ],
                "geographic": [
                    "CO",
                    "TX"
                ],
                "linguistic": [
                    "english"
                ],
                "credentialedPayors": null
            },
            "invitePending": false
        }
    ]

我有一个用户的搜索字段,他们可以通过
全名
电话
地理
进行搜索。我试图了解如何对返回的列表进行排序,并仅显示列表中与用户输入匹配的项目。对对象数组进行排序并为用户搜索创建匹配数组的好方法是什么?现在,我的组件只是显示返回的所有项目。

对于执行匹配,我会这样做

let to_sort =
    [
        {
            "id": "provider-a7d49a99-53c0-4b7c-9be3-8b9efc828f1b",
            "fullName": "Dr. Tim Lucca, FSE",
            "firstName": "Tim",
            "lastName": "Lucca",
            "prefix": "Dr.",
            "suffix": "FSE",
            "phone": "(303) 520-4571",
            "state": "CO",
            "doseSpotID": 185012,
            "active": "active",
            "capabilities": {
                "demographic": [
                    "adolescent",
                    "adult",
                    "child"
                ],
                "geographic": [
                    "CO",
                    "TX"
                ],
                "linguistic": [
                    "english",
                    "spanish"
                ],
                "credentialedPayors": null
            },
            "invitePending": false
        },
        {
            "id": "provider-450de310-fcb5-4e71-9d72-b6b320b2eb0a",
            "fullName": "Mr Doc Torr",
            "firstName": "Doc",
            "lastName": "Torr",
            "prefix": "Mr",
            "suffix": "",
            "phone": "(303) 520-4571",
            "state": "CO",
            "doseSpotID": 186856,
            "active": "active",
            "capabilities": {
                "demographic": [
                    "adult",
                    "adolescent",
                    "child"
                ],
                "geographic": [
                    "CO",
                    "TX"
                ],
                "linguistic": [
                    "english"
                ],
                "credentialedPayors": null
            },
            "invitePending": false
        }
    ]
let user_fullName = 'Dr. Tim Lucca, FSE'
let phone = '(303) 520-4571'
let geographic = 'CO'
let result = to_sort.filter((obj)=>{
    if(obj.fullName !== user_fullName){
        return false
    }
    if(obj.phone !== phone){
        return false
    }
    if(!obj.capabilities.geographic.includes(geographic)){
        return false
    }
    return true
});
检查其中一个属性是否相同(不将数据放入是因为它相当大)


在这两种情况下,结果都是满足条件的对象数组

您可能不需要排序。只使用过滤器一个好方法就是只响应匹配的项目。如果我使用了。过滤器,我不确定我的函数的内部是什么样子。如果items是我的对象数组,我会制作一些类似于
let list=items.filter(I=>…)
的示例,用于检查长度,而不检查是否有任何值与输入的字符串匹配。有什么建议吗?
let user_fullName = 'Dr. Tim Lucca, FSE'
let phone = '(303) 520-4571'
let geographic = 'CO'
let result = to_sort.filter((obj)=>{
    if(obj.fullName === user_fullName || obj.phone === phone || obj.capabilities.geographic.includes(geographic)){
        return true
    }
    return false
});