如何使用普通JavaScript遍历嵌套对象以查找值?

如何使用普通JavaScript遍历嵌套对象以查找值?,javascript,Javascript,因此,我正在创建一个实时搜索框,用于搜索嵌套对象的名称。我很难遍历对象来找到name键的值。例如: const colors = { blues: { "Neutral Blue": { name: "Blue", //looking to search at this depth }, "Dark Blue": { name: "Navy", },

因此,我正在创建一个实时搜索框,用于搜索嵌套对象的名称。我很难遍历对象来找到name键的值。例如:

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如果您有特定的浏览器兼容性要求,请在问题中说明