我有一個電話號碼數組,我需要查找是否有特定的電話號碼。 我最初嘗試做的是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次,如果您自己編寫循環,則運行速度會更快,然後使用一個函數,使循環,什麼是如此糟糕的惠特循環? –