用javascript中的值返回所有深度对象的嵌套键的好方法

用户3840147

我需要访问并返回对象中所有深度嵌套的键,并根据键返回它们。

例如我有

const chatSettings = {
  name: {
    questions: {
      question: 'What\'s your name?',
      fields: [
        {
          field: 'textinput',
          type: 'text',
          key: 'firstname',
          label: 'First name'
        },
        {
          field: 'textinput',
          type: 'text',
          key: 'lastname',
          label: 'Last name'
        },
      ]
    }
  },
  email: {
    questions: {
      question: 'Okay. {{username}}. Now type your email addess',
      fields: [
        {
          field: 'textinput',
          type: 'email',
          key: 'email',
          label: 'Email'
        }
      ]
    }
  }
}

我需要类似的东西getAllValuesForKey(chatSettings, 'key'),它会返回['firstname', 'lastname', 'email']

任何想法如何以高性能的方式做到这一点,同时考虑到这些对象中的一些甚至可能没有这个键?

内纳德·弗拉卡尔

您可以使用reduce方法创建递归函数并返回数组。

const data = {"name":{"questions":{"question":"What's your name?","fields":[{"field":"textinput","type":"text","key":"firstname","label":"First name"},{"field":"textinput","type":"text","key":"lastname","label":"Last name"}]}},"email":{"questions":{"question":"Okay. {{username}}. Now type your email addess","fields":[{"field":"textinput","type":"email","key":"email","label":"Email"}]}}}

function find_deep(data, key) {
  return Object.keys(data).reduce((r, e) => {
    if (typeof data[e] == 'object') r.push(...find_deep(data[e], key))
    if (key == e) r.push(data[e])
    return r
  }, [])
}

console.log(find_deep(data, 'key'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回与深度嵌套的 Javascript 对象中的搜索键对应的值

JavaScript:更改给定路径的深度嵌套对象的所有值

从对象数组中返回所有键:值对,键在 javascript 中包含下划线

在嵌套的 elasticsearch 对象中的所有键中搜索值

返回嵌套字典中的所有键以及值

获取深度嵌套对象中特定键的所有路径

如何替换javascript中嵌套对象的所有键

在深度嵌套的JSON中为特定的键名称选择特定的所有键路径和值

javascript按对象键过滤并返回嵌套对象键的值

以任意深度提取嵌套json数据中的所有键

从 AngularJS 中的对象访问所有嵌套值的最快方法

在JavaScript中的对象数组中搜索深度嵌套的值

将所有值放在深度嵌套的字典中

如何从嵌套对象中获取具有值的所有键

如何获取Javascript嵌套对象的所有属性值(不知道键)?

从JSON数组中的嵌套对象中获取所有键及其值(不带jQuery)

如何从javascript中的对象值返回键?

如何在嵌套对象数组中查找特定键的所有值?

通过深层嵌套对象中的特定键查找所有值

如何搜索嵌套的 javascript 对象并根据值返回键

如何将键路径数组返回嵌套的javascript对象中的值?

在深度嵌套的JSON中查找具有特定名称的所有键

Javascript检查对象及其嵌套对象的所有值

比较JavaScript中的嵌套对象并返回键相等

如何在其他对象内的所有嵌套对象中动态添加新键/值?

获取嵌套javascript对象中具有最高属性值的键的名称,

在javascript中深度复制嵌套对象的数组

所有键及其在Python上的嵌套字典深度

JavaScript-使用键数组从嵌套对象中检索值