javascript - 在 JavaScript 中声明 for 循环函数

标签 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});
}

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

最佳答案

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

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

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

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

关于javascript - 在 JavaScript 中声明 for 循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39578622/

相关文章:

c - 为什么 if 循环在请求下一个输入之前迭代两次?

javascript - 如何使用 jquery 将 css 应用于 catch 语句中的 div

c - 数组指针存在的原因是什么?

java - 读取10个数字并显示它们,不重复

javascript - 动态抓取输入/选择值而不直接定位 - Javascript

c++ - 数组赋值

python - 如何从python中的字符串中找到最大值和最小值?

javascript - IDBKeyRange.only 和 IDBKeyRange.lowerBound 一起出现在一个查询中

javascript - PdfMake 要重复的项目列表(文本旁边的复选框)

javascript - 尝试将 $interval 与全局变量转换为函数