Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中循环对象的问题_Javascript - Fatal编程技术网

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

我的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 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++