偶然的你
2024-01-18 16:48:05
如何創建一個函數來查找對象數組的數據,而不給出與對象值匹配的精確搜索值。例如我的數組是: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 數據的函數而不輸入確切的值。
2 回答

慕容森
TA貢獻1853條經驗 獲得超18個贊
你就快到了,你只需要檢查名稱是否包含你的字符串,而不是等于它:
const?found?=?data.filter(element?=>?element.name.includes(id))

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
您可以嘗試使用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
因此它不涵蓋所有邊緣情況,它將不起作用!
添加回答
舉報
0/150
提交
取消