использование метода .slice в массиве

javascript slice

781 просмотра

1 ответ

Я практикую раздел массива JavaScript Koan, и я не до конца понимаю, почему эти ответы верны. Я добавил свои предположения ниже, если кто-то может уточнить / сообщить мне, если я ошибаюсь:

  it("should slice arrays", function () {
    var array = ["peanut", "butter", "and", "jelly"];

    expect(array.slice(3, 0)).toEqual([]);       

Почему бы не по крайней мере нарезать «желе», так как срез начинается с 3? Как отсечение 0 делает его пустым вместо этого?

    expect(array.slice(3, 100)).toEqual(["jelly"]);  

Если обрезанный индекс выходит за пределы того, что в настоящее время существует в массиве, означает ли это, что новый массив, созданный из среза, будет содержать все индексы, начиная с 3 до конца массива?

    expect(array.slice(5, 1)).toEqual([undefined];  

Будет ли он всегда неопределенным, если начальный индекс не существует в массиве?

  });
Автор: RAgod Источник Размещён: 12.11.2019 09:13

Ответы (1)


1 плюс

Решение

Вторым аргументом Array.slice()является верхняя граница среза.

Думайте об этом как array.slice(lowestIndex, highestIndex).

Когда вы выполняете разрезание от индекса 3 до индекса 100, есть один элемент (в вашем случае) с индексами> = 3 и <100, поэтому вы получаете массив с этим одним элементом. Когда вы пытаетесь взять фрагмент из индекса 3 в индекс 0, не может быть никаких элементов, которые удовлетворяют условиям index> = 3 и <0, поэтому вы получаете пустой массив.

--РЕДАКТИРОВАТЬ--

Кроме того, array.slice()никогда не должен возвращать неопределенный. Это одно из преимуществ его использования. Если в массиве нет совпадающих значений, вы просто возвращаете пустой массив. Даже если вы скажете var a = new Array()и не добавите к нему никаких значений, вызов a.slice(0,1)просто вернет вам пустой массив. Нарезка из-за пределов массива также просто возвращает пустой массив. a.slice(250)вернется, []тогда как a[250]будет неопределенным.

Автор: jshanley Размещён: 24.04.2014 03:45
Вопросы из категории :
32x32