Javascript array.prototype.every无法在函数内部工作?

时间:2015-12-10 14:53:26

标签: javascript arrays regex

所有

请参阅以下代码笔

http://codepen.io/anon/pen/eJNMwJ

我正在尝试将一个字符串数组传递给我的名为Validate email的函数,该函数迭代检查电子邮件以查看它们是否与正则表达式匹配。

然而,由于某些原因,此功能似乎不起作用。

正则表达式是正确的

    var validEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

function validEmailList(emails) {
                console.log("running test 2");
        return emails.every(function (email) {
            validEmail.test(email.trim());
        });
    };

    emails = ['bob@bob.com', 'foobar@bob.com'];
    $('.test1').append(validEmail.test("foobar@foo.com"));
    $('.test2').append(validEmailList(emails));

似乎没有从函数返回任何内容,我期待一个布尔值。

2 个答案:

答案 0 :(得分:2)

您传递给every的功能也必须return

function validEmailList(emails) {
            console.log("running test 2");
    return emails.every(function (email) {
        return validEmail.test(email.trim());
    });
};

答案 1 :(得分:1)

Array.prototype.every调用的回调需要返回一个布尔值:

return emails.every(function (email) {
  return validEmail.test(email.trim());
//^^^^^^^
});