2017-04-19 156 views
0

我目前正在進行一項任務,在該任務中我必須使用Lodash並在JSON數組內查找對象。下面是我JSONLodash在nexted數組中找到對象

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

現在使用Lodash我想找到的axisSeries每個數組的第2個指數的字符串。

因此,例如,如果我搜索xValue。它應該返回我的對象​​,因爲它在第一個數組的第二個索引中可用。相同的yValue

但它不應該返回xTextyText的對象,因爲它們在第二個索引中都不可用。

要這樣做我想用Lodash。但是我找不到任何適當的功能。

回答

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>

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>

+0

當我運行的代碼片段,它給了我語法錯誤 – user2988458

+0

您不能使用ES6兼容的瀏覽器。我已將babel編譯添加到片段中。它應該解決這個問題。 – synthet1c