在javascript中声明for循环函数

时间:2016-09-19 17:14:51

标签: javascript arrays for-loop couchdb function-declaration

我有一个for循环,可以在couchDb中的javascript代码中搜索数组中的值。我想把它变成一个函数。这应该相当简单,但我遇到了麻烦。这是for循环(完全正常):

if (newDoc.destination && newDoc.destination.length > 0) {
    for (var i = 0; i < newDoc.destination.length; i++) {
        if (newDoc.destination[i].address) return;
    }
}
throw({forbidden: 'doc.address is required'});

这就是我把它包装成函数的方式:

function arrayReq(field, message) {
    message = message || "Array must have a " + field;
    if (newDoc.destination && newDoc.destination.length > 0) {
        for (var i = 0; i < newDoc.destination.length; i++) {
            if (newDoc.destination[i].field) return;
        }
    }
    throw({forbidden: message});
}

我认为函数中的返回应该会阻止函数继续运行,但它仍然会抛出错误。有人能告诉我我做错了什么吗?顺便说一句,如果我将字段更改为地址,它工作正常。我可以不将地址变成可变变量吗?

1 个答案:

答案 0 :(得分:2)

我认为问题在于您尝试将field用作字符串变量,以及destination[]数组中对象的属性。

在您的代码中,如果destination[i]对象没有名为field的属性(不是field参数中填充的字符串值,而是名为&#34的实际属性;字段&#34;)它永远不会评估为真,并且会突破该函数。

要使用javascript中的字符串表示来访问对象的属性,请使用索引器语法。

尝试将其从array.destination[i].field更改为array.destination[i][field]