Lodash在nexted数组中找到对象

时间:2017-04-19 11:41:11

标签: javascript jquery arrays json lodash

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

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

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

例如,如果我搜索xValue。它应该返回我的对象​​,因为它在First Array的第二个索引中可用。 yValue也是如此。

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

要这样做,我想使用Lodash。但我找不到任何合适的功能。

2 个答案:

答案 0 :(得分:0)

我认为你的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>

答案 1 :(得分:0)

您可以将_.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>