首页 > 解决方案 > JavaScript如何在不提供与对象值匹配的确切搜索值的情况下查找对象数组的数据

问题描述

如何创建一个函数来查找对象数组的数据,而不给出与对象值匹配的精确搜索值。

例如我的数组是:

const array = 
[{
    "name": "Max Messi",
    "age": 21,
    "gender": "male"
},
{
    "name": "tina baidya",
    "age": 10,
    "gender": "female"
},
{
    "name": "tina shrestha",
    "age": 100,
    "gender": "female"
}
]

现在我想要一个函数来返回其中包含name“tina”的所有数据。

我尝试使用array.filter()方法,但它需要准确的搜索名称。就像我需要输入tina shrestha而不仅仅是tina

这是我尝试过的:

const array = 
[{
    "name": "Max Messi",
    "age": 21,
    "gender": "male"
},
{
    "name": "Lina baidya",
    "age": 10,
    "gender": "female"
},
{
    "name": "tina shrestha",
    "age": 100,
    "gender": "female"
}
]
function findData(data, id){
    const found = data.filter(element => element.name === id)
    return found
}
console.log(findData(array, "tina"))//logs empty array as i need to type full search value

那么如何在不输入确切值的情况下创建搜索 json 数据的函数。

标签: javascriptarraysjsonsorting

解决方案


您快到了,您只需要检查名称是否包含您的字符串,而不是等于它:

const found = data.filter(element => element.name.includes(id))

推荐阅读