【问题标题】:Search object within object and get the key在对象中搜索对象并获取密钥
【发布时间】:2020-09-25 09:36:21
【问题描述】:

我有一个如下所示的对象路由器。假设我有另一个var x = "/podcast",我想找到这个变量 x 将驻留的键。例如在这种情况下,我想返回值“M2”

如何搜索此对象路由器及其子对象以返回适当的键?

谢谢!

var router = {
  M1: {
    url: "/",
    description: "",
    title: "",
    image: "",
  },
  M2: {
    url: "/podcast",
    description: "",
    title: "",
    image: "",
  },
  M3: {
    url: "/about",
    description: "",
    title: "",
    image: "",
  },
};

【问题讨论】:

  • 你接受不同键的冗余值还是只接受第一个找到的值?

标签: javascript object search


【解决方案1】:

您可以使用Object.keys() 获取对象键数组,然后使用.filter(),这是一个有效的 sn-p:

const search = '/podcast';

const router = {
  M1: {
    url: "/",
    description: "",
    title: "",
    image: ""
  },
  M2: {
    url: "/podcast",
    description: "",
    title: "",
    image: ""
  },
  M3: {
    url: "/about",
    description: "",
    title: "",
    image: ""
  }
};

const foundElement = Object.keys(router).filter((el) => router[el].url === search);


console.log(foundElement[0]);

【讨论】:

  • el变量是什么?或者那部分是如何运作的?
  • filter()方法采用回调函数过滤数组元素,elObject.keys()生成的单个元素。如果您想更深入地了解它,我链接了这些函数的文档。
  • 很高兴为您提供帮助! :)
【解决方案2】:
  • 要获取您的密钥,您可以使用Object.keys(object)
  • 要搜索key,您可以使用filter()find()
  • 要应用您在filterfind中定义的callback函数的条件。

就我而言,我使用了find 函数:

const foundElement = (router, searchableValue) => {
  const founded = Object.keys(router).find(
    (value) => router[value].url === searchableValue
  );
  return founded === undefined ? "Key not found" : founded;
};

const searchableValue = "/podcast";
console.log(foundElement(router, searchableValue));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多