Почему метод среза javascript с отрицательными числами, похоже, считается по-другому?

#javascript #slice

Вопрос:

Я получаю первый ломтик банана:

 let str = "Apple, Banana, Kiwi";
document.getElementById("demo").innerHTML = str.slice(7,13);
 

Теперь это сбивает меня с толку, потому что оно основано на нуле и показывает это как ответ

 let str = "Apple, Banana, Kiwi";
str.slice(-12, -6)    // Returns Banana
 

не уверен, почему это не » «Банановые кавычки означают пробел, а цифра -6 выше включает последний символ, но это не должно быть, как показывает мой пример здесь, потому что в качестве состояний javascript с методом среза последнее число не включено. Надеюсь, вы сможете помочь в моем замешательстве с моей стороны??

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

1. Я бы рекомендовал прочитать документы: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Я считаю, что они довольно хорошо объясняют аргументы

Ответ №1:

Если beginIndex или endIndex есть negative , то это рассматривается как

  • beginIndex = str.length beginIndex
  • endIndex = str.length endIndex
 let str = "Apple, Banana, Kiwi";

const negativeStart = -12;
const negativeEnd = -6;

console.log(str.slice(negativeStart, negativeEnd)) // Returns Banana

const start = str.length   negativeStart;
const end = str.length   negativeEnd;
console.log(start);
console.log(end);
console.log(str.slice(start, end)); 

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

1. Я видел пример и прочитал Moz, и да, это имеет смысл с формулой, которую вы использовали выше, и я вижу, как это работает. Моя ошибка заключалась в том, что я полагал, что он начался с фактического конца и отсчитывался с 0, что, похоже, я ошибаюсь.