猿问

JavaScript如何查找对象数组的数据而不给出与对象值匹配的精确搜索值

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

例如我的数组是:

const array = 

[{

    "name": "Max Messi",

    "age": 21,

    "gender": "male"

},

{

    "name": "tina baidya",

    "age": 10,

    "gender": "female"

},

{

    "name": "tina shrestha",

    "age": 100,

    "gender": "female"

}

]

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


我尝试使用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 数据的函数而不输入确切的值。



偶然的你
浏览 95回答 2
2回答

慕容森

你就快到了,你只需要检查名称是否包含你的字符串,而不是等于它:const found = data.filter(element => element.name.includes(id))

红糖糍粑

您可以尝试使用includes()方法,如下所示:const array = [    {        "name": "Max Messi",        "age": 21,        "gender": "male"    },    {        "name": "Lina baidya",        "age": 10,        "gender": "female"    },    {        "name": "tina shrestha",        "age": 100,        "gender": "female"    }]const findData = (data, searchParam) => {    return data.filter(element => element.name.includes(searchParam.toLowerCase()));}const results = findData(array, "tin");console.log(results);tina2但是,如果您搜索 example或tinathy因此它不涵盖所有边缘情况,它将不起作用!
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答