未定义的对象值和NaN
Object values undefined and NaN
我有一个函数可以创建一个值对象,但我在控制台日志中得到了这个:
x: Array[4]
0: undefined
1: NaN
2: undefined
3: NaN
length: 4
y: Array[4]
0: undefined
1: NaN
2: undefined
3: NaN
length: 4
该函数在从json编码的PHP文件创建的对象上循环:
var sdata = {"4":{"7":["1","7","2","2"]},"3":{"3":["2","8","1","1"]}};
我的功能是:
function populate_collisions(){
gcollision = {
x: [],
y: []
};
for(var key in sdata){
gcollision.x.push( sdata[key][0] );
gcollision.x.push( sdata[key][0] + (sdata[key][2]-1) );
gcollision.y.push( sdata[key][1] );
gcollision.y.push( sdata[key][1] + (sdata[key][3]-1) );
}
console.log(gcollision);
}
我很好奇为什么我变得不明确和NaN?我该如何解决这个问题?
您的"对象/阵列混合"是3D的(3层深)。
var sdata = {
"4": {
"7": ["1", "7", "2", "2"]
},
"3": {
"3": ["2", "8", "1", "1"]
}
};
在第一个项目中,您得到了键"4",然后在它下面,一个键"7",然后是您的数组。你缺少一个额外的循环:
function populate_collisions() {
gcollision = {
x: [],
y: []
};
for (var key in sdata) {
for (var keyTwo in sdata[key]) {
gcollision.x.push(sdata[key][keyTwo][0]);
gcollision.x.push(sdata[key][keyTwo][0] + (sdata[key][keyTwo][2] - 1));
gcollision.y.push(sdata[key][keyTwo][1]);
gcollision.y.push(sdata[key][keyTwo][1] + (sdata[key][keyTwo][3] - 1));
}
}
console.log(gcollision);
}
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 返回“[对象对象] NaN” - Javascript
- Date 对象在尝试计算 IE8 中两个日期之间的时间时返回 NaN
- 正则表达式的 JS 对象类型返回为 NaN
- 同时将日期转换为显示NaN的日期对象,以代替以角度表示的日期
- 未定义的对象值和NaN
- 如何使用属性值为NaN的should.js检查对象相等性
- 连接对象的值's属性返回NaN(Javascript)
- 为什么给数组赋值会使数组对象变成nan
- 从对象中取出具有无效(NaN、blank等)值的键的最佳方法
- JavaScript date()对象返回NaN和getYear(和其他)
- 调用reduce to sum对象数组返回NaN
- 只要对象属性不是NaN,就将对象推入数组
- 为什么我的日期对象在谷歌应用程序脚本返回NaN
- 对象在求和时返回NaN