在javascript中声明for循环函数

Declaring a for loop function in javascript

本文关键字:循环 函数 for 声明 javascript      更新时间:2023-09-26

我有一个for循环搜索数组中的值在我的javascript代码在couchDb。我想把它变成一个函数。这应该是相当简单的,但我有麻烦。这是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});
}

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

我认为问题是你试图使用field作为字符串变量,以及destination[]数组内对象的属性。

在您的代码中,如果destination[i]对象没有一个称为field的属性(不是在field参数中填充的字符串值,而是一个名为"field"的实际属性),它将永远不会计算为true并脱离函数。

要在javascript中使用字符串表示来访问对象的属性,可以使用indexer语法。

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