我查询了一个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的评论:我将数组复制到另一个数组中,然后我就能覆盖这些字段。