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

时间:2014-12-02 10:55:57

标签: javascript arrays

我查询了一个websql数据库,并且返回的一些字段具有字符串值" undefined"。

在循环中,我想检查字段是否未定义,如果是,请为它们分配一个空字符串作为值。

除了作业外,一切运作良好。这是我的代码:

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] = "";
        }
    }
}

result是一个包含对象的数组。 if-block中的代码被执行,但赋值除外,它永远不会生效。

我需要改变什么?

编辑:

当我在上面的循环之后立即添加它时,它输出&#34; undefined&#34;对于在上面的循环之前已经未定义的每个字段(希望有意义: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的评论:我将数组复制到另一个数组中,然后我就能覆盖这些字段。

0 个答案:

没有答案