Изменить размер массива по индексу - PullRequest
0 голосов
/ 02 октября 2018

Я получил массив типа ...

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

..., начальный индекс let start = 2 и конечный индекс let end = 5.

Я бы хотелизменить размер массива, начиная с индекса startIndex и заканчивая endIndex , как в этом примере:

start = 2;
end = 3;

let result = [2, 3]

start = 2;
end = 2;

let result = [2]

start = 0;
end = 8;

let result = [0, 1, 2, 3, 4, 5, 6, 7, 8]

ThisНиже приведен фрагмент кода.Но, очевидно, есть некоторые проблемы:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

let start = 2
let end = 3
array.splice(0, start);
array.splice(end, array.length);

console.log(array)

Ответы [ 4 ]

0 голосов
/ 03 октября 2018

Вы можете взять Array#copyWithin и настроить length массива.

var start = 2,
    end = 5,
    array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];

array.copyWithin(0, start, end + 1).length = end - start + 1;

console.log(array);
0 голосов
/ 02 октября 2018

Вы можете использовать Array.slice(start,end) и увеличить end на единицу, поскольку вы хотите, чтобы оно было включительно.

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

let start = 2
let end = 3
var result = array.slice(start, end+1);

console.log(result)
0 голосов
/ 02 октября 2018

Когда вы объединяете результирующий массив (массив после первого соединения) с индексом фактического массива [рассматриваемый массив], вы получаете этот вывод, пожалуйста, посмотрите на следующий код.Запустите этот код и убедитесь, что вы поймете

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

let start = 2
let end = 3

array.splice(0,start);

//After splice this is result array [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 

console.log(array);

//If you splice again with end=3 index you get the result array as [2, 3, 4]. 
// To get your desired output as array you should work on array after you splice first time

array.splice(2,array.length);

console.log(array);

Надеюсь, это объясняет, что происходит с вашим кодом.Как напоминание о методе сплайсинга.Метод splice () добавляет / удаляет элементы в / из массива и возвращает удаленные элементы.

Синтаксис:

array.splice (index, howmany, item1, ....., itemX)

0 голосов
/ 02 октября 2018

Вы можете использовать Array.slice(), чтобы получить новый массив:

const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

const start = 2
const end = 3

const result = array.slice(start, end + 1);

console.log(result)

И если вы хотите напрямую изменить исходный массив, вы можете объединить это с Array.splice():

const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

const start = 2
const end = 3

array.splice(0, array.length, ...array.slice(start, end + 1));

console.log(array)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...