在JavaScript的for循环中设置数组中包含的对象的字段
我查询一个websql数据库,返回的一些字段的字符串值未定义 在循环中,我想检查字段是否有未定义的字段,如果有,则为它们指定一个空字符串作为值 除了作业外,一切都很顺利。这是我的密码:在JavaScript的for循环中设置数组中包含的对象的字段,javascript,arrays,Javascript,Arrays,我查询一个websql数据库,返回的一些字段的字符串值未定义 在循环中,我想检查字段是否有未定义的字段,如果有,则为它们指定一个空字符串作为值 除了作业外,一切都很顺利。这是我的密码: for (var i = 0; i < result.length; i++) { for (temp in result[i]) { if (result[i][temp] == "undefined") { console.log(typeof(resul
for (var i = 0; i < result.length; i++) {
for (temp in result[i]) {
if (result[i][temp] == "undefined") {
console.log(typeof(result[i][temp])); // outputs "string" as it should
result[i][temp] = "";
}
}
}
结果是一个包含对象的数组。执行if块中的代码时,赋值除外,赋值永远不会生效
我需要改变什么
编辑:
当我在上面的循环之后立即添加它时,它会为在上面的循环之前已经未定义的每个字段输出undefined,希望这是有意义的:D
for (var i = 0; i < result.length; i++) {
for (temp in result[i]) {
if (result[i][temp] == "undefined") {
console.log(result[i][temp]);
}
}
}
我在回调函数中使用了整个过程,但这不重要,对吧?我的意思是,在回调函数中,代码的执行顺序与其他任何地方一样,对吗
第二次编辑:
var arr = [];
arr.push(result[0]); // result currently only holds one object
for (var i = 0; i < arr.length; i++) {
for (temp in arr[i]) {
console.log(arr[i][temp]);
console.log(typeof(arr[i][temp])); // outputs "string" for the undefined fields
if (arr[i][temp] == "undefined") {
arr[i][temp] = "szszsz";
}
}
}
for (var i = 0; i < arr.length; i++) {
for (temp in arr[i]) {
console.log(arr[i][temp]); // still outputs undefined
}
}
答复:
请参阅ArinCool的评论:我将该数组复制到另一个数组中,然后可以覆盖这些字段。如果我在chrome中测试此代码,它会工作。结果数组将按预期进行更新。如果在运行此命令后将结果作为一个整体输出,则不会显示任何更改?有关回复,请参阅我的编辑。顺便说一句,我也使用chrome。只要结果数组填充正确,您的代码应该可以工作。您确定返回的值是未定义的而不是未定义的吗?这些结果对象没有只读属性,是吗?我实际上想在for循环中填充arr数组,而不是在循环之前填充它。