gpt4 book ai didi

javascript - 搜索 Javascript 对象数组

转载 作者:行者123 更新时间:2023-11-30 14:50:19 25 4
gpt4 key购买 nike

我正在尝试通过字符串过滤 javascript 对象数组。但我希望过滤器查看每个属性并对其进行测试以查看字符串是否有效。 AngularJS 有一个内置过滤器可以执行此操作,但我在 SO 上找不到任何解决方案。

[
{
"title":"Mr.",
"name":"John Smith",
"firstName":"John",
"lastName":"Smith"
},
{
"title":"Mr.",
"name":"Bill Smith",
"firstName":"Bill",
"lastName":"SMith"
}

]

例如,如果我为文本字符串输入“Jo”,它会返回索引 0 处的对象,如果您只想按单个属性进行搜索,这很容易做到。

现在,如果我输入“Mr”,它应该返回索引 0 和索引 1 处的项目,因为我们正在搜索所有属性。

希望这对我的要求有意义。

编辑:非常抱歉昨晚很晚,我遗漏了数据结构中非常重要的细节。

{
"title":"Mr.",
"name":"John Smith",
"firstName":"John",
"lastName":"Smith",
"contactType":{
"name":"test"
},
"addresses":[
{"address":"Test Street One"},
{"address":"Test Street Two"},
]
},
{
"title":"Mr.",
"name":"Bill Smith",
"firstName":"Bill",
"lastName":"SMith",
"contactType":{
"name":"test"
},
"addresses":[
{"address":"Test Street One"},
{"address":"Test Street Two"},
]
}

因此,在这种情况下,搜索将考虑对象中任何类型和任意数量的嵌套对象。抱歉忘了这部分。

最佳答案

您可以遍历数组的对象并使用 indexof 查找具有输入字符串的元素,

演示

var myarray =[
{
"title":"Mr.",
"name":"John Smith",
"firstName":"John",
"lastName":"Smith"
},
{
"title":"Mr.",
"name":"Bill Smith",
"firstName":"Bill",
"lastName":"SMith"
}

];
var toSearch = "Mr";
var results =[];
for(var i=0; i<myarray.length; i++) {
for(key in myarray[i]) {
if(myarray[i][key].indexOf(toSearch)!=-1) {
results.push(myarray[i]);
}
}
}

console.log(results)

关于javascript - 搜索 Javascript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48237868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com