Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Значения переменной через substr равны (https://javascript.ru/forum/misc/75233-znacheniya-peremennojj-cherez-substr-ravny.html)

Sonya 14.09.2018 18:08

Значения переменной через substr равны
 
Здравствуйте! Помогите, пожалуйста, разобраться. Значения переменной через substr равны, как записать их в условии в сравнении со значением. То есть:
var str = 'автостоп';

и вот здесь как корректно записать?

if (str.substr(2, 2) == 'то' || str.substr(5, 2) == 'то')

Можно как то это записать по-другому объединив, т.к сравнение идет с одним и тем же значением, или по-другому нельзя?
То есть, если
str.substr(2, 2) или str.substr(5, 2) равны 'то'.

Так можно?
if ((str.substr(2, 2) || str.substr(5, 2)) == 'то')

Dilettante_Pro 14.09.2018 18:24

Sonya, прежде всего
var str = 'автостоп';
alert( str.substr(2, 4));
alert(str.substr(5, 7));


Вопрос 2:
Чему будет равен результат выражения (str.substr(2, 4) || str.substr(5, 7)) ?

j0hnik 14.09.2018 18:34

Dilettante_Pro,
первому операнду

MC-XOBAHCK 14.09.2018 18:38

Sonya,
вот тут str.substr(2, 4) вы берёте 4 символа
здесь str.substr(5, 7) вы берёте 7 символов.

4символа = 7символов?

Вот тут почитайте: https://learn.javascript.ru/string#%...g-substr-slice

Sonya 14.09.2018 18:47

Отредактировала. Написала, как пример. На самом деле переменная str будет подставляться, но в случаях, если "обрезанные" строки будут совпадать, то будет выполняться определенное действие. В данном примере значение равно "то".

Sonya 14.09.2018 18:47

MC-XOBAHCK,
Влияние PHP

MC-XOBAHCK 14.09.2018 19:27

if (str.substr(2, 2) == 'то' || str.substr(5, 2) == 'то') {

}

Это модель или, где str.substr(2, 2) равно 'то' или str.substr(5, 2) равно 'то'. Тоесть что то одно из двух равно и условие пропускает код внутри.

А если так сделать:
if (str.substr(2, 2) == 'то' && str.substr(5, 2) == 'то') {

}

тогда оба варианта должны быть равны 'то'

Можно таким синтаксисом записать:
str.substr(2, 2) == 'то' || str.substr(5, 2) == 'то' ? /* тут код если равно*/ : /* Тут если нет */;

Можно заменить || на && если оба варианта должны быть равны.

Sonya 14.09.2018 19:40

MC-XOBAHCK, спасибо. Это я знаю, я интересовалась, можно ли сократить код, коль скоро, в обоих сравнениях значение одно и то же. Сейчас разобралась, что не получиться. Всем спасибо!

рони 14.09.2018 19:48

Sonya,
if (~[str.substr(2, 2),str.substr(5, 2)].indexOf('то') )

Sonya 14.09.2018 20:00

рони, да, именно это! Спасибо большое!


Часовой пояс GMT +3, время: 11:47.