Как я могу проверить, является ли первый индекс в этой строке = ‘1’, а затем удалить его?

#javascript #formatter

Вопрос:

Я создаю форматер номера телефона, и все работает, кроме этой части. Ошибка, с которой я сталкиваюсь, заключается в следующем: «Ошибка типа: Не удается прочитать свойство ‘indexOf’ неопределенного». Я попытался использовать .includes(‘1’,0) вместо этого, но это тоже не сработало.

 // If cleanNumber has a country code(1), remove it
  if((cleanNumber.indexOf("1")) = 0){
    cleanNumber = cleanNumber.substring(1); //removes first character = "1"
    activeSheet.getRange(i,3).setValue(cleanNumber);  
    Logger.log("Country code removed: "   cleanNumber);
    }
 

Комментарии:

1. используйте startWith , когда вы хотите проверить строку. Также ваша переменная cleanNumber является undefined , а не строкой.

2. @Sysix Это также доступно для строк!

3. Когда вы видите такое сообщение об ошибке, то попытка использовать другой метод, подобный includes этому, является неправильной реакцией. Сначала прочитайте и поймите сообщение об ошибке, затем отладьте и проверьте, почему cleanNumber оно не определено.

4. @JoakimL. Кристиансен спасибо обновлено

5. Используя startWith, это лучший вариант, вы также можете использовать необязательную цепочку , чтобы избежать ошибки «невозможно прочитать свойство undefined», как это: if(cleanNumber?.startsWith("1"))

Ответ №1:

= является оператором присваивания.

== является оператором сравнения.

Используйте == вместо этого.

 if ((cleanNumber.indexOf("1")) == 0) {
    cleanNumber = cleanNumber.substring(1); //removes first character = "1"
    activeSheet.getRange(i, 3).setValue(cleanNumber);
    Logger.log("Country code removed: "   cleanNumber);
}
 

Комментарии:

1. Спасибо, это сработало!! Я ценю вашу помощь.