如何从其他选定变量声明和比较数组变量

时间:2013-10-02 18:12:48

标签: javascript

我有

var two = document.getElementById('email').value;

我希望将数组中的某些值与变量2中的值进行比较

email = two[gmail.com, yahoo.com]; // how to type this correctly

并将电子邮件变量与用户插入的值进行比较并发送警报('我们不接受免费电子邮件),如果用户已插入数组中的一个值。

if email = 0 // did not found any of the values listed in email = then return true.

4 个答案:

答案 0 :(得分:2)

要查明用户输入的电子邮件是否在您的黑名单中:

var blacklist = ["gmail.com", "yahoo.com"]

然后使用indexOf查看用户输入和黑名单之间是否匹配:

if (blacklist.indexOf(userInput) == -1) { ... }

答案 1 :(得分:2)

这是你的意思吗?

function validateEmail() {
    var two = document.getElementById('email').value;
    if (["gmail.com", "yahoo.com"].indexOf(two) != -1) {
        alert("We don't accept free e-mail");
        return false;
    }
    return true;
}

这会产生一个名为validateEmail的函数。它获取您的email元素,并检查固定数组以查看它是否包含该元素。如果是,则发送警报并返回false,否则返回true。

尝试猜测你想要的东西而不是你要求的东西:

首先,您可能希望数组是自己的变量。这通常是一种很好的做法,使您可以更轻松地修改数组 - 或者在其他地方创建数组。

var badEmails = ["gmail.com", "yahoo.com"];
if (badEmails.indexOf(two) != -1) {

更重要的是,您可能需要检查用户输入的整个电子邮件地址。如果two是标准电子邮件,则您的功能会稍微复杂一些:

function validateEmail() {
    var two = document.getElementById('email').value;
    var badEmails = ["gmail.com", "yahoo.com"];
    for (var bad in badEmails) {
        if (two.indexOf(bad) != -1) {
            alert("We don't accept free e-mail");
            return false;
        }
    }
    return true;
}

答案 2 :(得分:2)

我假设文本字段仅包含电子邮件的域名部分(例如“gmail.com”或yahoo.com),而不是整个地址。

var two = document.getElementById('email').value;
var forbidden = ["gmail.com", "yahoo.com"];

var found = forbidden.indexOf(two );
if(found > -1)
{
    alert("We don't accept free e-mail");
}

答案 3 :(得分:2)

Scott Mermelstein的答案很好。我只想补充一点,在JavaScript中避免使用!===是一种很好的做法,因为它们有时会抛出误报。最好养成使用!=====的习惯,因为它们不允许类型强制。

也就是说,当您使用.indexOf方法时,在数组中定位字符串很容易。但是,该方法是在1.6中实现的,因此IE6和IE7将无法使用它。对IE8的确切不确定。

如果您担心这些浏览器,您可以实现在MDN找到的polyfill,也可以编写如下函数:

function indexOf(arr, str) {
  if (typeof Array.prototype.indexOf === 'function') {
    return arr.indexOf(str);
  }
  for (var i = 0; i < arr.length; i += 1) {
    if (arr[i] === str) {
      return i;
    }
  }
  return -1;
}

此函数将返回数组内字符串的索引,如果它不在数组内,则返回-1