刚刚有个小伙伴提出了个问题,觉得挺有意思的,分享下~
他的要求是这样滴:
var source_arr = [{"早上":5,"中午":1608,"晚上":357,"中午和晚上":217}];
// 上面这个对象要转换成下面这样
var out_arr = [{name:"早上",value:5},{name:"中午",value:1608},{name:"晚上",value:357},{name:"中午和晚上",value:217}];
原本合计很简单点事儿嘛,循环累加就完了呗,没成想,竟想了好一阵~
不废话,直接上码!
<script type="text/javascript">
var source_arr = [{"早上":5,"中午":1608,"晚上":357,"中午和晚上":217}];
// 上面这个对象要转换成下面这样
//[{name:"早上",value:5},{name:"中午",value:1608},{name:"晚上",value:357},{name:"中午和晚上",value:217}]
console.log("原始数据是对象数组:"+source_arr);
var obj = source_arr[0];
console.log("获取第一个对象【它只有一个对象】:"+obj);
var out_arr = []; //创建一个数组
for(var key in obj){
var temp = {}; //创建临时对象
temp.name = key; //存储对象的Key为name
temp.value = obj[key]; //存储value
out_arr.push(temp);
// console.log(key,obj[key]);
}
console.log("提取name:"+out_arr[0].name);
var res = JSON.stringify(out_arr); //转换json
console.log("转换输出:"+res);
</script>
就是将一个数组中的对象,它的属性值拆分出来之后,属性名和属性值分别起个名之后生成一个新的对象,然后存储到一个数组里,输出这样子~PS:属性名字符串它自动加的引号