javascript中循环对象的问题
我的JavaScript有一些问题javascript中循环对象的问题,javascript,Javascript,我的JavaScript有一些问题 <html> <body> <p id="demo2"></p> <script> var text = '{"h":["username","hair_color","height"],"d":[["ali","brown",1.2],["ma0072c","blue",1.4],["joe","brown",1.7],["zehua","black",1.8]]}'; var
<html>
<body>
<p id="demo2"></p>
<script>
var text = '{"h":["username","hair_color","height"],"d":[["ali","brown",1.2],["ma0072c","blue",1.4],["joe","brown",1.7],["zehua","black",1.8]]}';
var obj = JSON.parse(text);
var x= Object.keys(obj.h).length;
var y= Object.keys(obj.d).length;
var json_datas = JSON.stringify(obj.h);
var json_data = JSON.stringify(obj.d);
var obj2 = JSON.parse(json_data);
var json_data2 = JSON.stringify(obj2[1]);
var obj3 = JSON.parse(json_data2);
var newjson = [];
var newjson2 = [];
i=0;
l=0;
z=0;
m=0;
var boys= {};
for (i in obj.h){
boys[obj.h[i]] = obj.d[m][l];
l++;
z++;
m++;
newjson.push(boys);
}
newjson2 = newjson2.concat(newjson);
var newjson2 = JSON.stringify(newjson);
document.getElementById("demo2").innerHTML = newjson2;
</script>
</body>
</html>
但我现在的输出是这样的
[{"username":"ali","hair_color":"brown","height":1.2},
{"username":"ali","hair_color":"brown","height":1.2},
{"username":"ali","hair_color":"brown","height":1.2},
{"username":"ali","hair_color":"brown","height":1.2}]
我建议将循环代码改进为如下内容:
var newjson2 = [];
obj.d.forEach(function(element) {
var k = {};
element.forEach(function(element, i){
k[obj.h[i]] = element;
})
newjson2.push(k);
})
看起来更清晰、更健壮……我建议将循环代码改进为如下内容:
var newjson2 = [];
obj.d.forEach(function(element) {
var k = {};
element.forEach(function(element, i){
k[obj.h[i]] = element;
})
newjson2.push(k);
})
对我来说,它看起来更清晰、更健壮……我不知道为什么要使用大量代码来获得这个结果。您可以使用以下代码:
<html>
<body>
<p id="demo2"></p>
<script>
var text = '{"h":["username","hair_color","height"],"d":[["ali","brown",1.2],["ma0072c","blue",1.4],["joe","brown",1.7],["zehua","black",1.8]]}';
var obj = JSON.parse(text);
var newjson = [];
for (var i = 0 ; i < obj.d.length; i++){
var boys= {};
for(var j= 0; j < obj.h.length; j++) {
boys[obj.h[j]] = obj.d[i][j];
}
newjson.push(boys);
}
document.getElementById("demo2").innerHTML = JSON.stringify(newjson);
</script>
var text='{“h”:[“用户名”、“头发颜色”、“高度”],“d”:[“阿里”、“棕色”,1.2],“ma0072c”、“蓝色”,1.4],“乔”、“棕色”,1.7],“泽华”、“黑色”,1.8]];
var obj=JSON.parse(文本);
var newjson=[];
对于(var i=0;i
我不知道为什么要使用大量代码来获得此结果。您可以使用以下代码:
<html>
<body>
<p id="demo2"></p>
<script>
var text = '{"h":["username","hair_color","height"],"d":[["ali","brown",1.2],["ma0072c","blue",1.4],["joe","brown",1.7],["zehua","black",1.8]]}';
var obj = JSON.parse(text);
var newjson = [];
for (var i = 0 ; i < obj.d.length; i++){
var boys= {};
for(var j= 0; j < obj.h.length; j++) {
boys[obj.h[j]] = obj.d[i][j];
}
newjson.push(boys);
}
document.getElementById("demo2").innerHTML = JSON.stringify(newjson);
</script>
var text='{“h”:[“用户名”、“头发颜色”、“高度”],“d”:[“阿里”、“棕色”,1.2],“ma0072c”、“蓝色”,1.4],“乔”、“棕色”,1.7],“泽华”、“黑色”,1.8]];
var obj=JSON.parse(文本);
var newjson=[];
对于(var i=0;i
对于(b中的a)循环只在对象属性上迭代。要在数组元素上迭代,请使用forEach循环
obj.h.forEach(function(element, idx, arr){
boys[arr[element]] = obj.d[m][l];
l++;
z++;
m++;
newjson.push(boys);
});
对于(b中的a)循环,作为变量arr引用obj.h.只会在对象属性上迭代。要在数组元素上迭代,请使用forEach循环
obj.h.forEach(function(element, idx, arr){
boys[arr[element]] = obj.d[m][l];
l++;
z++;
m++;
newjson.push(boys);
});
作为变量arr引用obj.h.@nishant,位置正确,在arrays@Nishant对于in,您不需要在
中使用i++
loop@nishant,很好地定位,不要在上的
循环中为..使用arrays@Nishant对于in
循环,您不需要在中使用i++