【问题标题】:Extract Key pair Using Lodash Library使用 Lodash 库提取密钥对
【发布时间】:2016-01-05 16:44:47
【问题描述】:

我有 JSON 对象

{  
   "data":[  
      {  
         "customer":101,
         "profile":7,
         "context":{  
            "rows":20,
            "from":"2016-01-05T06:14:02.750Z",
            "filter_group_id":null,
            "order":"desc",
            "q":"host",
            "start":0,
            "source_group_id":null,
            "hi":"",
            "filters":[  

            ],
            "terms":"host",
            "source_group_name":null,
            "until":"2016-01-05T07:14:02.750Z"
         },
         "search_type":"searchui",
         "search_time":"2016-01-05 13:33:01",
         "id":724
      },
      {  
         "customer":101,
         "profile":7,
         "context":{  
            "rows":20,
            "from":"2016-01-05T06:14:02.750Z",
            "filter_group_id":null,
            "order":"desc",
            "q":"host",
            "start":0,
            "source_group_id":null,
            "hi":"",
            "filters":[  

            ],
            "terms":"host",
            "source_group_name":null,
            "until":"2016-01-05T07:14:02.750Z"
         },
         "search_type":"searchui",
         "search_time":"2016-01-05 13:26:42",
         "id":723
      }
   ]
}

我想使用 lodash 从上面的 json 数据中提取键值对,如下所示。

我是新手 lodash libray 用户。我读到了 _.map, _.any 但无法按要求实现。

预期的 JSON 对象:

[
    {
        "id":724
        "search_time":"2016-01-05 13:33:01",
        "filters":[],
        "from":"2016-01-05T06:14:02.750Z",
        "until":"2016-01-05T07:14:02.750Z"
        "terms":"host",
        "source_group_name":null,
    },
    {
        "id":723
        "search_time":"2016-01-05 13:26:42",
        "filters":[],
        "from":"2016-01-05T06:14:02.750Z",
        "until":"2016-01-05T07:14:02.750Z",
        "terms":"host",
        "source_group_name":null,
    }
]

【问题讨论】:

    标签: json lodash


    【解决方案1】:

    应该是这样的:

    var newArray = [];
    _.each(data, function(item){
        newArray.push({
           "id":item.id
            "search_time":item.search_time,
            "filters":context.filters,
            ...etc...
        });
    });
    

    【讨论】:

      【解决方案2】:

      我不知道这是否是更有表现力的方式,但我认为它有效。

       var dataFilter = _.map(data, function(value){
          return _.merge(
                _.pick(value.context, 'filters', 'from', 'until', 'terms', 'source_group_name'),
                _.pick(value, 'id', 'search_time')
          );
       });
      

      【讨论】:

        猜你喜欢
        • 2020-11-28
        • 2017-07-30
        • 1970-01-01
        • 2012-07-13
        • 2018-11-09
        • 2014-10-21
        • 2013-03-17
        相关资源
        最近更新 更多