#javascript #chaining
#javascript #связывание
Вопрос:
Просто столкнулся с этим при публикации ответов и не понял, почему это происходит.
Вот код:
var s = "aaaaaX..";
var a = s.slice(1);
a = a.slice( 0, a.lastIndexOf("X") );
var b = s.slice(1).slice( 0, s.lastIndexOf("X") );
var c = s.slice(1).slice( 0, s.lastIndexOf("X") - 1);
console.log(c);
Почему a
не равно b
?
Почему -1
нужно добавлять так, чтобы c == a
?
Демонстрация: http://jsfiddle.net/mb974 /
Комментарии:
1. @cookiemonster Да, вы правы, просто понял это сам, но решил не удалять вопрос, поскольку другие могут столкнуться с той же проблемой. 🙂
2. Потому
s
что вs.lastIndexOf("X")
относится к неизмененномуs
, а не кs.slice(1)
..slice()
Метод не изменяет оригинал. РЕДАКТИРОВАТЬ: … извините, моя первоначальная формулировка была неправильной.
Ответ №1:
Это потому, что вы удалили один первый символ из s
и присвоили его a
переменной. Таким образом, индекс ниже на 1, чем индекс в строке, где вы не удалили первый символ.
Следующий пример будет работать:
var a = s.slice(1);
a = a.slice( 0, s.lastIndexOf("X") );
var b = s.slice(1).slice( 0, s.lastIndexOf("X") );
// a == b
Комментарии:
1. Я считаю, что OP хотел
aaaa
вместоaaaaX
, но только предположение.