如果path有效,Lodash会返回值数组

我有以下对象,并在Node.js(我只是在terminal中运行node )lodash“查询”:

 var obj = { a: [{ b: [{ c: "apple" }, { d: "not apple" }, { c: "pineapple" }] }] }; > _.get(obj, "a[0].b[0].c") 'apple' > _.get(obj, "a[0].b[1].c") undefined > _.get(obj, "a[0].b[2].c") 'pineapple' 

我的问题是:有没有办法返回的path被发现有效的值的数组?

例:

 > _.get(obj, "a[].b[].c") ['apple', 'pineapple'] 

正如@Tomalak在评论中所build议的,解决scheme是使用JSONPath而不是Lodash。

他们的github页面: https : //github.com/dchester/jsonpath

例:

 > var jp = require("jsonpath") > var obj = { a: [{ b: [{ c: "apple" }, { d: "not apple" }, { c: "pineapple" }] }] }; > jp.query(obj, "$.a[*].b[*].c") [ 'apple', 'pineapple' ] 

我不知道这将是最有效的,或者你需要什么,但你可以使用_.each或_.map创build一个数组,如果一些条件是有效的? 也许类似

 let first = _.map(object, (item) => { //change logic for maybe if(item.bc) { return item.bc } }) //filter out nulls let second = _.without(first, null)