代码之家  ›  专栏  ›  技术社区  ›  Abdulla Thanseeh

无法从lodash访问对象:错误无法访问objects元素

  •  2
  • Abdulla Thanseeh  · 技术社区  · 6 年前
    export default {
      configuration:
      {
        site: {
          control:[
            api: {
              'list': '/api/v1/config/sites',
              'post': '/api/v1/config/sites/',
              'patch': '/api/v1/config/sites/',
              'delete': '/api/v1/config/sites/'
            }
          ],
        },
    }
    

    我想通过 _.get(configuration, ['site','control','api','list'])

    如果我有什么问题,请帮助我。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Boussadjra Brahim    6 年前

    首先是你的 configuration 结构错误,完全在 control:[api: {...}] 数组不支持类似于文本对象的键/值结构,因此应将该项包装为 {} 喜欢 control:[{api: {...}}] 访问它的方式如下:

       _.get(configuration, ['site', 'control', '0', 'api', 'list'])
    

    或者改变你的 control 对象的值,如: control:{api: {...}}

    通过包装的完整示例 api 按密钥 {}

    let configuration = {
      site: {
        control: [{
          api: {
            'list': '/api/v1/config/sites',
            'post': '/api/v1/config/sites/',
            'patch': '/api/v1/config/sites/',
            'delete': '/api/v1/config/sites/'
          }
        }],
      }
    }
    var dumb = _.get(configuration, ['site','control','0','api','list'])
    
    document.getElementById("key").innerHTML = dumb
    console.log(_.get(configuration, ['site', 'control', '0', 'api', 'list']))
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>
    <p id="key"></p>
        2
  •  1
  •   Matthew Herbst    6 年前

    control 是数组,因此无法访问 control.api 不需要首先指定数组中所需的索引。相反,你需要做的是:

    _.get(configuration, ['site','control', '0', 'api','list'])