如果路径有效,则Lodash返回值数组

Let*_*ren 5 javascript node.js lodash

我在Node.js中有以下对象和lodash"查询"(我只是node在终端中运行):

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'
Run Code Online (Sandbox Code Playgroud)

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

例:

> _.get(obj, "a[].b[].c")
['apple', 'pineapple']
Run Code Online (Sandbox Code Playgroud)

Let*_*ren 6

正如 @Tomalak 在评论中建议的那样,解决方案是使用 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' ]
Run Code Online (Sandbox Code Playgroud)