Arrays 将数组对象转换为对象数组
我有以下格式的源数据(数组对象): 我希望将数据转换为以下格式(对象数组): 这是有点相反的Arrays 将数组对象转换为对象数组,arrays,object,lodash,underscore.js,Arrays,Object,Lodash,Underscore.js,我有以下格式的源数据(数组对象): 我希望将数据转换为以下格式(对象数组): 这是有点相反的 执行此操作的适当命令组合是什么,无论是使用lodash还是其他方法?组合map方法并通过键访问对象,我们可以实现预期结果: data.value.map((s, i) => ({value: s, dayOfWeek: data.dayOfWeek[i], dayOrNight: data.dayOrNight[i]})); 例如: let数据={ 价值:[ 59, 58, 62, 5
执行此操作的适当命令组合是什么,无论是使用lodash还是其他方法?组合
map
方法并通过键访问对象,我们可以实现预期结果:
data.value.map((s, i) => ({value: s,
dayOfWeek: data.dayOfWeek[i], dayOrNight: data.dayOrNight[i]}));
例如:
let数据={
价值:[
59, 58, 62, 58, 56, 57, 57, 65, 81, 81
],
星期五:[
‘星期四’、‘星期五’、‘星期六’、‘星期四’、‘星期五’、‘星期五’,
“星期五”、“星期一”、“星期五”、“星期二”
],
白天或晚上:[
“N”、“D”、“N”、“D”、“D”、“N”、“N”、“N”、“N”、“N”
]
};
const result=data.value.map((s,i)=>({value:s,
dayOfWeek:data.dayOfWeek[i],dayOrNight:data.dayOrNight[i]});
控制台日志(结果)代码>整洁!有没有不必包含属性名称的方法?理想情况下,它将是通用的和未来的证据来处理任何数量的不同属性,而不仅仅是那些碰巧出现在数据中的属性。除了可能命名用作映射函数基础的属性(即此处的value
)。。。其余的最好不要特别命名。@drmrbrewer谢谢!如果没有属性名称,您将插入哪些名称来代替dayOrNight、dayOfWeek、value?对不起,“不包括属性名称”的意思是不将它们硬编码到转换函数中,而只是从源数据对象动态读取它们。这样,如果稍后向数据对象添加新数组(使用新属性名),它将自动由转换函数处理。。。可能只是在对象中的关键点之间循环。。。除非你先到,否则我就试试看@drmrbrewer我稍微修改了你的方法,请看我的更新回复。啊,是的,巧妙地避开了任意使用一个对象属性作为映射函数基础的做法。
[
{
value: 59,
dayOfWeek: 'Thursday',
dayOrNight: 'N'
},
{
value: 58,
dayOfWeek: 'Friday',
dayOrNight: 'D'
},
{
value: 62,
dayOfWeek: 'Saturday',
dayOrNight: 'N'
},
...
]
data.value.map((s, i) => ({value: s,
dayOfWeek: data.dayOfWeek[i], dayOrNight: data.dayOrNight[i]}));