我有一个电话号码数组,我需要查找是否有特定的电话号码。 我最初尝试做的是if(arr.indexOf(phoneNumber) != -1) { bla.. }
。它有效 - 有时候。
我后来发现,由于号码会从不同的电话/登记表中得到,有些人使用国家代码(如+ 1-xxx-xxx-xxxx),有些人不会。有些使用空格作为分隔符,有些使用连续10个数字。总之 - 地狱来比较。比较JavaScript中的电话号码
我需要的是一个优雅的解决方案,可以让我进行比较,希望不需要复制或更改原始数组。
在C++中,您可以定义比较运算符。我设想我的解决方案,这样的伪代码,希望使用一些聪明的正则表达式:
function phoneNumberCompare(a, b) {
a = removeAllSeperators(a); //regex??
a = a.substring(a.length, a.length - 10);
b = removeAllSeperators(b); //regex??
b = b.substring(b.length, b.length - 10);
return (a < b ? -1 : (a == b ? 0 : 1)); //comaprison in C++ returns -1, 0, 1
}
,并使用它像if(arr.indexOf(phoneNumber, phoneNumberCompare) != -1)
现在,我知道这样的结构的解决方案并不在JavaScript中存在,但可以有人建议的东西短和优雅达到预期的结果?
一如既往,感谢您的时间。我知道indexOf()已经有了第二个参数(position),上面只是为了说明我需要什么。
我会建议寻找到谷歌的电话号码处理库:http://code.google.com/p/libphonenumber/ –
感谢詹姆斯。看起来像一个很酷的图书馆,但也许是一个很大的小问题:) –
上面的例子将运行一个循环,并且每行运行removeAllSeperators函数2次,如果您自己编写循环,则运行速度会更快,然后使用一个函数,使循环,什么是如此糟糕的惠特循环? –