2016-02-23 2 views
1

Мне было интересно, нужно ли проверять состояние в этом конкретном примере.JavaScript - нужно ли сначала проверить состояние кондиционирования

Состояние, о котором я говорю, это if (Id.indexOf("_")).

Он просто проверяет, имеет ли символ Id символ подчеркивания, и если да, то установите переменную, чтобы снять знак подчеркивания и заменить дефис.

Я знаю, что могу просто использовать Id = Id.split("_").join("-"); без инструкции if, чтобы проверить, является ли условие истинным, но просто интересно, правильно ли в этом случае проверить состояние или нет?

В каком направлении вы бы это сделали? И объясните, почему, пожалуйста.

Id = "My_ID"; 
    var brand = "The Brand";   
    var b = brand.trim().toLowerCase(); 
    var page = b.split(/\W+/g).join("-"); 

    if (Id.indexOf("_")) { 
     Id = Id.split("_").join("-"); 
    } 

ответ

2

Это может ответить на ваш вопрос:

console.log("mytext".split("_").join("-")); // mytext 
console.log("my_text".split("_").join("-")); // my-text 

Кроме того условия в вашем коде if (Id.indexOf("_")) не работает, как вы хотели. Вы не должны использовать if (Id.indexOf("_") > -1) или (~Id.indexOf("_"))

+0

спасибо, что поймали это. Я пропустил> -1 ​​ – Mike

+0

@Mike приветствую :-) – madox2

3

Если нет подчеркивания вашего split() не будет делать ничего, так нет - нет необходимости в if здесь. Берите с чем-то в этом роде, и вы прекрасно:

Id = Id.split("_").join("-"); 

или

Id = Id.replace(/_/g, '-'); 

, чтобы избежать создания массива первых.

Смежные вопросы