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