Chciałbym podzielić tablicę n elementów na 3 części zgodnie z podanym indeksem (na zdjęciu poniżej indeks to 3): Próbowałem tego, ale w niektórych przypadkach to nie działa.  const split = (tablica,...

0
PierBJX 25 czerwiec 2021, 18:16

4 odpowiedzi

Najlepsza odpowiedź

Tak to zrobił:

const splitArray = (arr, index) => {
    return [
        arr.slice(0, index), 
        [arr[index]], 
        arr.slice(index + 1)
    ];
}

const array1 = ['item1', 'item2', 'item3', 'item4'];
const array2 = ['item1'];

console.log(splitArray(array1, 1));
console.log(splitArray(array2, 0));
console.log(splitArray(array1, 3));
1
Snirka 25 czerwiec 2021, 15:29

Możesz po prostu podzielić z podanym indeksem.

function split(array, index) {
     return [
         array.slice(0, index),
         array.slice(index, index + 1),
         array.slice(index + 1)
     ];
}

console.log(split(['item1', 'item2', 'item3', 'item4'], 1));
/*
leftItems = ['item1'];
requestedItem = ['item2'];
rightItems = ['item3', 'item4'];
*/

console.log(split(['item1'], 0));
/*
leftItems = [];
requestedItem = ['item1'];
rightItems = [];
*/

console.log(split(['item1', 'item2', 'item3', 'item4'], 3));
/*
leftItems = ['item1', 'item2', 'item3'];
requestedItem = ['item4'];
rightItems = [];
*/
3
Nina Scholz 25 czerwiec 2021, 15:25

Możesz użyć 3 plasterków

function splitOnIndex(array, index) {
  const leftItems = array.slice(0, index);
  const requestedItem = array.slice(index, index + 1);
  const rightItems = array.slice(index + 1);

  return [leftItems, requestedItem, rightItems];
}

var [left, requested, right] = splitOnIndex(['item1', 'item2', 'item3', 'item4'], 1);
console.log(left, requested, right);

[left, requested, right] = splitOnIndex(['item1'], 0);
console.log(left, requested, right);

[left, requested, right] = splitOnIndex(['item1', 'item2', 'item3', 'item4'], 3);
console.log(left, requested, right);
1
Gabriele Petrioli 25 czerwiec 2021, 15:25
const array = ['item1', 'item2', 'item3', 'item4'];
const index = 2;

leftItems = array.slice(0, index);
requestedItem = array[index];
rightItems = array.slice(index+1, array.length);
1
knpfl 25 czerwiec 2021, 15:27