如何检查数组元素在javascript中是否相同(超过2个元素)

时间:2012-08-16 18:11:28

标签: javascript arrays compare

我正在努力确保手机#不是所有相同的字符,例如1111111111 我使用的代码有效,但必须有一个更清洁的方式。我试过循环,但一次只比较两个连续的字符。这就是我现在使用的:

if (MainPhone.value != "")
            {               
                if ((MainPhone.value == 1111111111) || (MainPhone.value == 2222222222) || (MainPhone.value == 3333333333) || (MainPhone.value == 4444444444) || (MainPhone.value == 5555555555) || (MainPhone.value == 6666666666) || (MainPhone.value == 7777777777) || (MainPhone.value == 8888888888) || (MainPhone.value == 9999999999) || (MainPhone.value == 0000000000))
                {
                window.alert("Phone Number is Invalid");
                MainPhone.focus();
                return false;
                }
            }

我发现这个建议是针对别人的问题,但无法让它发挥作用。

var dup = MainPhone.value.split('');
if all(dup == dup(1))

2 个答案:

答案 0 :(得分:2)

我会尝试这样的事情:

var phone = '11111211';
var digits = phone.split('').sort();
var test = digits[0] == digits[digits.length - 1];

只需对数组进行排序并比较第一个和最后一个元素..

答案 1 :(得分:1)

您可以使用这样的正则表达式来检查所有字符是否相同:

^(.)\1*$

示例:

var phone = '11111111';

if (/^(.)\1*$/.test(phone)) {
  alert('All the same.');
}

演示:http://jsfiddle.net/Guffa/3V5en/


正则表达式的说明:

^   = matches start of the string
(.) = captures one character
\1  = matches the first capture
*   = zero or more times
$   = matches end of the string

因此,它捕获第一个字符,如果它们相同则匹配其余字符。