【问题标题】:Lodash find object in nexted arrayLodash在嵌套数组中查找对象
【发布时间】:2017-04-19 11:41:11
【问题描述】:

我目前正在处理一项任务,我必须使用Lodash 并在 JSON 数组中找到一个对象。下面是我的JSON 字符串

var options = {
  'axisSeries': [
    ["xText", "xValue"],
    ["yText", "yValue"]
  ]
}

现在使用Lodash 我想在axisSeries 的每个数组的第二个索引中查找字符串。

例如,如果我搜索xValue。它应该返回我的对象​​,因为它在第一个数组的第二个索引中可用。 yValue 也一样。

但它不应该返回 xTextyText 的对象,因为它们在第二个索引中都不可用。

为此,我想使用Lodash。但我找不到任何合适的功能。

【问题讨论】:

    标签: javascript jquery arrays json lodash


    【解决方案1】:

    我认为你的 JSON 应该是这样的,

    var options = {
       'axisSeries': [
            { 'xText': 'X Text', 'xValue': 10 },
            { 'yText': 'Y Text', 'yValue': 20 }
        ]
    }
    

    在 Lodash 中使用 _.pluck() 得到 xValue 喜欢,

    _.pluck(options.axisSeries, 'xValue');
    // should return [10]
    

    或者,您可以使用_.map()

    _.map(options.axisSeries, 'xValue');
    

    如果您想通过xValue 获取整个数组,则可以使用_.filter() 之类的,

    var options = {
      'axisSeries': [
        ["xText", "xValue"],
        ["yText", "yValue"]
      ]
    }
    
    console.log(
       _.filter(options.axisSeries, function(o) { return o.indexOf('xValue')!=-1; })
    )
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

    【讨论】:

      【解决方案2】:

      您可以将_.map_.last 一起使用,或者如果您需要获取特定索引,您可以使用_.nth。你也应该告诉你的老师ramda。它具有更好的结构和组合功能的能力。

      var options = {
        'axisSeries': [
          ["xText", "xValue"],
          ["yText", "yValue"]
        ]
      }
      
      console.log(
        _.map(options.axisSeries, _.last),
        _.map(options.axisSeries, xs => _.nth(xs, 1))
      )
      <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

      【讨论】:

      • 您不能使用兼容 es6 的浏览器。我已将 babel 编译添加到 sn-p。它应该可以解决问题。
      猜你喜欢
      • 2020-01-22
      • 2019-03-21
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多