Javascript 如何使用lodash从json返回childobject?

Javascript 如何使用lodash从json返回childobject?,javascript,json,lodash,Javascript,Json,Lodash,假设我有以下json文件,并且我希望返回“existing.primaryBundle.products”数组,最好使用lodash: { "existing": { "hasPlatinum": false, "primaryBundle": { "id": "2008", "name": "TV - Entertainment, Sport", "products": [ { "name": "Ent

假设我有以下json文件,并且我希望返回“existing.primaryBundle.products”数组,最好使用lodash:

{
  "existing": {
    "hasPlatinum": false,
    "primaryBundle": {
      "id": "2008",
      "name": "TV - Entertainment, Sport",
      "products": [
        {
          "name": "Entertainment",
          "id": "100",
          "price": 2600,
          "gifted": false
        },
        {
          "name": "Sport",
          "id": "107",
          "price": 2500,
          "gifted": false,
          "swappableProducts": [
            {
              "name": "Movies",
              "id": "105",
              "price": 2000,
              "gifted": false
            }
          ]
        }
      ]
    },
    "extrasBundle": {
      "id": "131",
      "name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)",
      "products": [
        {
          "name": "MUTV (Sports)",
          "id": "665",
          "price": 0,
          "gifted": false
        },
        {
          "name": "LFCTV (Sports)",
          "id": "666",
          "price": 0,
          "gifted": false
        },
        {
          "name": "Chelsea TV (Sports)",
          "id": "667",
          "price": 0,
          "gifted": false
        }
      ]
    }

  }
}
我曾尝试过lodash,并使用以下语句:

list2=u2;.pick(现有,'primaryBundle.products')


但这将返回一个错误,而不是想要的结果。如何选择此products数组?

它返回错误的主要原因是
现有的
不是一个全局范围的对象,您必须将对象分配给某个变量,如
const obj={…}
,然后将参数作为
obj.existing
传递给
\u pick
方法,但是我看不出在这里使用lodash的理由,您可以直接引用该对象的路径。

您可以使用
.get(nameOfObject,'existing.primaryBundle.products')
当然您需要像我下面使用
sampleObject那样命名您的对象

你也可以去看看洛达斯


假设您已经解析了JSON字符串以获得一个对象
obj
,您可以说
list2=obj.existing.primaryBundle.products
。不需要洛达斯。
const sampleObject = {
  "existing": {
    "hasPlatinum": false,
    "primaryBundle": {
      "id": "2008",
      "name": "TV - Entertainment, Sport",
      "products": [{
        "name": "Entertainment",
        "id": "100",
        "price": 2600,
        "gifted": false
      }, {
        "name": "Sport",
        "id": "107",
        "price": 2500,
        "gifted": false,
        "swappableProducts": [{
          "name": "Movies",
          "id": "105",
          "price": 2000,
          "gifted": false
        }]
      }]
    },
    "extrasBundle": {
      "id": "131",
      "name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)",
      "products": [{
        "name": "MUTV (Sports)",
        "id": "665",
        "price": 0,
        "gifted": false
      }, {
        "name": "LFCTV (Sports)",
        "id": "666",
        "price": 0,
        "gifted": false
      }, {
        "name": "Chelsea TV (Sports)",
        "id": "667",
        "price": 0,
        "gifted": false
      }]
    }
  }
}

console.log(_.get(sampleObject, 'existing.primaryBundle.products'));