在多级对象中查找关键字



我的后端构建了这个对象:

{
"cats": {
"persian": {
"19:51:38": {
"name": "Perry"
},
"19:51:40": {
"name": "Bob",
}
"19:51:39": {
"name": "Saurus",
},
},
"ragdoll": {
"19:51:38": {
"name": "Billy",
},
"19:51:43": {
"name": "Billy",
}
"19:51:39": {
"name": "Pepi",
},
},
"norwegian": {
"19:51:34": {
"name": "Michonne",
},
"19:52:40": {
"name": "Bull",
},
"19:52:42": {
"name": "Oscar",
}
}
},
"dogs": {
"labrador": {
"19:51:35": {
"name": "Alice",
},
"19:51:36": {
"name": "Arthur",
},
"19:51:37": {
"name": "Nemo",
},
"19:51:40": {
"name": "Rose",
}
},
"chihuahua": {
"19:51:35": {
"name": "Dory",
},
"19:51:36": {
"name": "Bob",
},
"19:51:37": {
"name": "Carl",
},
"19:51:38": {
"name": "Bruce",
},
"19:51:39": {
"name": "Moon",
}
},
"pomeranian": {
"19:51:35": {
"name": "Elvis",
},
"19:51:36": {
"name": "Dorian",
},
"19:51:37": {
"name": "Amy",
},
"19:51:38": {
"name": "Bill",
}
},
"collie": {
"19:51:35": {
"name": "Thaurus",
},
"19:51:37": {
"name": "Mine",
},
"19:51:40": {
"name": "Wyng",
}
}
}
}

我有一个搜索字段,允许您以hh:mm:ss格式插入日期小时。

现在我想返回与该日期相关联的对象。我举了一个例子:如果用户搜索19:51:40,应用程序必须返回以下对象数组:

[{type: "cats", breed: "persian", name: "Bob"}, {type: "dogs", breed: "labrador", name: "Rose"}, , {type: "dogs", breed: "collie", name: "Wyng"}]

我想通过做一个for循环来检查每个键小时来实现这一点。这是最快的方法吗?我不相信。。。

在lodash中有一个方法调用findKey,但我不能使用它,因为我不知道密钥的名称(与品种相关的密钥(,它会更改。那么我该如何进行搜索呢?

您可以使用嵌套的for循环来迭代键,并获得所需的结果:

let obj = { "cats": { "persian": { "19:51:38": { "name": "Perry" }, "19:51:40": { "name": "Bob" }, "19:51:39": { "name": "Saurus" } }, "ragdoll": { "19:51:38": { "name": "Billy" }, "19:51:43": { "name": "Billy" }, "19:51:39": { "name": "Pepi" }, }, "norwegian": { "19:51:34": { "name": "Michonne" }, "19:52:40": { "name": "Bull" }, "19:52:42": { "name": "Oscar" } } }, "dogs": { "labrador": { "19:51:35": { "name": "Alice" }, "19:51:36": { "name": "Arthur" }, "19:51:37": { "name": "Nemo" }, "19:51:40": { "name": "Rose" } }, "chihuahua": { "19:51:35": { "name": "Dory" }, "19:51:36": { "name": "Bob" }, "19:51:37": { "name": "Carl" }, "19:51:38": { "name": "Bruce" }, "19:51:39": { "name": "Moon" } }, "pomeranian": { "19:51:35": { "name": "Elvis" }, "19:51:36": { "name": "Dorian" }, "19:51:37": { "name": "Amy" }, "19:51:38": { "name": "Bill" } }, "collie": { "19:51:35": { "name": "Thaurus"}, "19:51:37": { "name": "Mine" }, "19:51:40": { "name": "Wyng" } } } };
function search(obj, t){
let result = [];
for(type in obj){
for(breed in obj[type]){
for(time in obj[type][breed]){
if(time === t){
result.push({type,breed, name : obj[type][breed][time].name})
}
}
}
}
return result;
}
console.log(search(obj, "19:51:40"));

最新更新