Javascript lodash对象变换

Javascript lodash对象变换,javascript,lodash,Javascript,Lodash,数据源 var data = { "2017-08-09": [ { "time": "09:00", "available": true }, { "time": "13:00", "available": true }, { "time": "13:30", "available": true }, ] } 期望的变换 newData = [ "2017-0

数据源

var data = {
  "2017-08-09": [
    {
      "time": "09:00",
      "available": true
    },
    {
      "time": "13:00",
      "available": true
    },
    {
      "time": "13:30",
      "available": true
    },
    ]
}
期望的变换

newData = [  "2017-08-09": ['09:00','13:00','13:30'] ]
我尝试了以下方法:

function recursiveFunction(collection){
            var newData = [];

    _.forOwn(collection, function(value, key){ 

        newData.push( {key});
        value.map( item => {
                if (item.available === true)  newData.key = item.time
        })
    }); 
    console.log(newData)
}; 
但不完全如此:/

对于vanilla JS,使用获取密钥数组,并使用和将其转换为对象:

var数据={“2017-08-09”:[{“时间”:“09:00”,“可用”:真},{“时间”:“09:30”,“可用”:假},{“时间”:“11:30”,“可用”:真},{“时间”:“10:00”,“可用”:真},{“时间”:“10:30”,“可用”:假};
var result=Object.keys(数据).map(函数(键){
返回{
[键]:数据[键]
.过滤器(功能(o){
返回o.available;
})
.map(功能(o){
返回o.time;
})
};
});
控制台日志(结果),用于获取密钥数组,并使用和将其转换为对象:

var数据={“2017-08-09”:[{“时间”:“09:00”,“可用”:真},{“时间”:“09:30”,“可用”:假},{“时间”:“11:30”,“可用”:真},{“时间”:“10:00”,“可用”:真},{“时间”:“10:30”,“可用”:假};
var result=Object.keys(数据).map(函数(键){
返回{
[键]:数据[键]
.过滤器(功能(o){
返回o.available;
})
.map(功能(o){
返回o.time;
})
};
});

控制台日志(结果)仅使用可用的
时间跨值映射,并使用以下方法提取时间:


仅使用可用的
时间跨值映射,并使用以下方法提取时间:


你的小提琴与问题中的代码完全不同,你粘贴了错误的链接吗?哇!我想是的,只是更新了一下:)谢谢你的提琴和问题中的代码完全不同,你粘贴了错误的链接吗?哎呀!我想是的,只是更新一下:)谢谢谢谢,我如何添加逻辑来处理
“available”:false
?因此,我只能列出
“可用”时的时间:在映射时间之前使用数组过滤器。请参阅更新的示例。谢谢,我如何添加逻辑来处理
“available”:false
?因此,我只能列出
“可用”时的时间:在映射时间之前使用数组过滤器。请参阅更新的示例。
var newData = _.mapValues(data, times => _.map(_.filter(times, 'available'), 'time'));