У меня есть массив телефонных номеров, и мне нужно выяснить, есть ли в нем конкретный номер телефона.
Сначала я попытался сделать if(arr.indexOf(phoneNumber) != -1) { bla.. }
. И это работало - иногда.
Позже я обнаружил, что, поскольку число / числа будут приходить с разных телефонов / форм ввода, некоторые люди используют коды стран (например, + 1-xxx-xxx-xxxx), а некоторые - нет. Некоторые используют пробелы в качестве разделителей, а некоторые просто вставляют 10 цифр подряд. Короче - ад для сравнения.
Что мне нужно, так это элегантное решение, которое позволило бы мне сравнивать, надеюсь, без необходимости копировать или изменять исходный массив.
В 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, но может ли кто-нибудь предложить что-то short и элегантный , которое достигает желаемого результата?
Как всегда, спасибо за ваше время.
PS: я знаю, что у indexOf () уже есть второй параметр (позиция), приведенное выше просто иллюстрирует то, что мне нужно.