如何使用普通JavaScript遍历嵌套对象以查找值?
因此,我正在创建一个实时搜索框,用于搜索嵌套对象的名称。我很难遍历对象来找到name键的值。例如:如何使用普通JavaScript遍历嵌套对象以查找值?,javascript,Javascript,因此,我正在创建一个实时搜索框,用于搜索嵌套对象的名称。我很难遍历对象来找到name键的值。例如: const colors = { blues: { "Neutral Blue": { name: "Blue", //looking to search at this depth }, "Dark Blue": { name: "Navy", },
const colors = {
blues: {
"Neutral Blue": {
name: "Blue", //looking to search at this depth
},
"Dark Blue": {
name: "Navy",
},
"Light Blue": {
name: "Azure",
},
"Green Blue": {
name: "Teal",
},
},
greens: {
"Light Green": {
name: "Seafoam",
},
"Blueish Green": {
name: "Mint",
},
"Grey Green": {
name: "sage",
},
},
reds: {
"Light Red": {
name: "blush",
},
"Neutral Red": {
name: "Scarlett",
},
"Dark Red": {
name: "Merlot",
},
},
};
我正在尝试穿越:
颜色变量=>
父颜色类别
对象名
查找名称:key,最后:
从名称键获取值。
我的最终目标是搜索所有这些值以返回实时搜索结果。我能用vanilla JS做这件事吗
我尝试使用标准方法,如Object.ValuesColor,但我不知道如何跳过对象键值对。感谢您的帮助,提前谢谢
编辑:
我试图找到以下更干净的输出:
let names = Object.entries(colors);
names.map((n) => {
let name = Object.values(n[1]).forEach((value) => console.log(value));
});
//returns:
Object { name: "Blue" }
Object { name: "Navy" }
Object { name: "Azure" }
Object { name: "Teal" }
Object { name: "Seafoam" }
Object { name: "Mint" }
Object { name: "sage" }
Object { name: "blush" }
Object { name: "Scarlett" }
Object { name: "Merlot" }
解决方案
若您使用的是现代浏览器,您可以使用它来获取名称数组
Object.values(colors)
.flatMap(x => Object.values(x))
.map(x => x.name);
然后在返回的数组中搜索。
您使用哪些参数进行搜索?我正在尝试使用indexOf方法匹配keyup事件的输入文本。请您提供一些输入/搜索值示例,以及您希望搜索对象所基于的每个参数的结果示例?钥匙?当然!为了更清楚一点,我刚刚编辑了我的问题@hev1,我正在查找名称键,并希望获得该键的值。@Sacadelic如果您有特定的浏览器兼容性要求,请在问题中说明