在JavaScript的for循环中设置数组中包含的对象的字段

在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

我查询一个websql数据库,返回的一些字段的字符串值未定义

在循环中,我想检查字段是否有未定义的字段,如果有,则为它们指定一个空字符串作为值

除了作业外,一切都很顺利。这是我的密码:

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数组,而不是在循环之前填充它。