将对象转换为数组
Converting an object to an array
我尝试使用Object.keys()
来转换对象
var obj1={
"jan": {
"COAL": "25"
},
"feb": {
"ROM": "50",
"WASTE": "55"
},
"april": {
"COAL": "60"
}
}
var obj2=[
{
"month": "jan",
"product": "COAL",
"quantity": "25"
},
{
"month": "feb",
"product": "ROM",
"quantity": "50"
},
{
"month": "feb",
"product": "WASTE",
"quantity": "55"
},
{
"month": "april",
"product": "COAL",
"quantity": "60"
}
]
但是在中间失败了,因为我无法计算属性,例如在"feb"中有两个产品"ROM"answers"WASTE",但这可以增加到3或4。谁能就这个问题提出可行的解决办法?
这样做:
var res = []
for(i in obj1){
var rowObj = obj1[i];
for(j in rowObj){
var newObj = {'month' : i, 'product' : j, 'quantity' : rowObj[j]}
res.push(newObj);
}
}
console.log(res);
您需要在外部对象中遍历键,然后在内部对象中遍历键,因此只要您可以依赖ES5 Array方法:
var obj1={
"jan": {
"COAL": "25"
},
"feb": {
"ROM": "50",
"WASTE": "55"
},
"april": {
"COAL": "60"
}
}
var o = Object.keys(obj1).reduce(function(acc, month, i) {
Object.keys(obj1[month]).forEach(function(product) {
acc.push({'month':month, 'product':product, 'quantity':obj1[month][product]})
});
return acc;
}, []);
document.write(JSON.stringify(o));
使用ES6的箭头函数,它变得更加简洁:
var o = Object.keys(obj1).reduce((acc, m) => {
Object.keys(obj1[m]).forEach(p => acc.push({'month':m, 'product':p, 'quantity':obj1[m][p]}));
return acc;
}, []);
相关文章:
- 使用JS将数组转换为json对象
- 本地存储中的字符串到字节数组转换
- Javascript函数,用于将数组转换为“;2-元组”;
- php数组转换为javascript
- 在Javascript中将一个值和字符串数组转换为if语句
- 将数组转换为javascript格式的字符串
- 如何将数组转换为有效的json
- JSON数组转换为JS对象数组
- 如何将数组转换为映射
- JavaScript:将字符串数组转换为文本区域
- javascript |数组转换
- 数组转换为多个字符串
- Javascript将数组转换为字符串并使其反向输出
- 将Byte数组转换为Angularjs中的Base64字符串
- 将对象数组转换为与nodejs/pg/unnest兼容的数组
- 将Javascript数组转换为PHP数组
- 将数组转换为键值对
- 使用Ramda将对象数组转换为普通对象
- javascript将对象数组转换为字符串以存储在s3中
- 使用.join方法将数组转换为不带逗号的字符串