javascript中循环对象的问题
issue in looping object in 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 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>
该脚本boys[obj.h[i]] = obj.d[m][l];
为什么代码不想循环?有人能告诉我正确的循环吗?我想要像这个一样的输出
[{"username":"ali","hair_color":"brown","height":1.2},
{"username":"marc","hair_color":"blue","height":1.4},
{"username":"joe","hair_color":"brown","height":1.7},
{"username":"zehua","hair_color":"black","height":1.8}]
但我现在的输出是这样的
[{"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);
})
对我来说,看起来更清晰、更健壮…
for(a in b)循环只是在对象属性上迭代。要迭代数组元素,请使用forEach循环。
obj.h.forEach(function(element, idx, arr){
boys[arr[element]] = obj.d[m][l];
l++;
z++;
m++;
newjson.push(boys);
});
变量arr引用obj.h.
我不知道你为什么要用很多代码来得到这个结果。你可以使用这个代码:
<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>
相关文章:
- JavaScript代码问题:我正在将对象转换为数组
- jquery$(this)对象缺少问题
- JavaScript对象继承问题
- 在对象中添加方法时出现问题
- 基本对象/原型语法问题
- Javascript对象文字,POST问题
- 使用Javascript对象为具有两个背景图像的DIV设置样式时出现问题
- 使用.map解析JSON对象时出现问题
- 类中对象的奇怪问题(John Resig简单继承)
- 访问Javascript对象-Node.js的作用域问题
- JavaScript对象中存在数组的问题
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- JavaScript—父类和子类/对象的此问题
- 我该如何解决这个问题;参考网格”;在JavaScript中完成的对象数
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 创建jQuery对象时出现问题
- 面向对象,控制器问题,初学者Javascript
- 从 JSON 对象获取数据时出现问题
- Rails的问题,haml + javascript在字段对象的模糊