js对象数组拆分

刚刚有个小伙伴提出了个问题,觉得挺有意思的,分享下~

他的要求是这样滴:

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:属性名字符串它自动加的引号

猜你喜欢

转载自blog.csdn.net/qq_37525899/article/details/82055642