JavaScript Массив сплайс против ломтика

В чем разница между splice и slice?

$scope.participantForms.splice(index, 1);
$scope.participantForms.slice(index, 1);

Ответ 1

splice() изменяет исходный массив, тогда как slice() нет, но оба возвращают объект массива.

Смотрите примеры ниже:

var array=[1,2,3,4,5];
console.log(array.splice(2));

Это вернет [3,4,5]. Это влияет на исходный массив, в результате чего получается array [1,2].

var array=[1,2,3,4,5]
console.log(array.slice(2));

Это вернет [3,4,5]. Исходный массив НЕ подвержен влиянию array [1,2,3,4,5].

Ниже приведена простая скрипка, которая подтверждает это:

//splice
var array=[1,2,3,4,5];
console.log(array.splice(2));

//slice
var array2=[1,2,3,4,5]
console.log(array2.slice(2));


console.log("----after-----");
console.log(array);
console.log(array2);

Ответ 2

Splice and Slice - это функции Javascript Array.

Splice vs Slice

  • Метод splice() возвращает удаленные элементы в массиве, а метод slice() возвращает выбранный элемент в массиве как новый объект массива.

  • Метод splice() изменяет исходный массив, а метод slice() не изменяет исходный массив.

  • Метод splice() может принимать n количество аргументов, а метод slice() принимает 2 аргумента.

Сплав с примером

Аргумент 1: Индекс, обязательно. Целое число, указывающее, в какую позицию добавлять/удалять элементы. Используйте отрицательные значения для указания позиции из конца массива.

Аргумент 2: Необязательно. Количество элементов для удаления. Если установлено значение 0 (ноль), никакие элементы не будут удалены. И если не будет передано, все элементы из предоставленного индекса будут удалены.

Аргумент 3... n: Необязательно. Новый элемент (ы), который нужно добавить в массив.

var array=[1,2,3,4,5];
console.log(array.splice(2));
// shows [3, 4, 5], returned removed item(s) as a new array object.
 
console.log(array);
// shows [1, 2], original array altered.
 
var array2=[6,7,8,9,0];
console.log(array2.splice(2,1));
// shows [8]
 
console.log(array2.splice(2,0));
//shows [] , as no item(s) removed.
 
console.log(array2);
// shows [6,7,9,0]

Ответ 3

Метод slice() возвращает копию части массива в новый объект массива.

$scope.participantForms.slice(index, 1);

Это НЕ изменяет participantForms массив, но возвращает новый массив, содержащий один элемент найденный в index позиции в исходном массиве.

Метод splice() изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые элементы.

$scope.participantForms.splice(index, 1);

Это позволит удалить один элемент из participantForms массива в index позиции.

Это нативные функции Javascript, AngularJS не имеет к ним никакого отношения.

Ответ 4

Вот простой трюк, чтобы запомнить разницу между slice и splice

var a=['j','u','r','g','e','n'];

// array.slice(startIndex, endIndex)
a.slice(2,3);
// => ["r"]

//array.splice(startIndex, deleteCount)
a.splice(2,3);
// => ["r","g","e"]

Trick to remember:

Думайте о "spl" (first 3 letters of splice) как о сокращении "указать длину", что второй аргумент должен быть длиной, а не индексом

Ответ 5

Сращивание - ссылка MDN - спецификация ECMA-262

Синтаксис
array.splice(start[, deleteCount[, item1[, item2[,...]]]])

параметры

  • start: обязательно. Начальный индекс.
    Если start отрицательное, оно обрабатывается как "Math.max((array.length + start), 0)" в соответствии со спецификацией (пример представлен ниже) эффективно с конца array.
  • deleteCount: необязательно. Количество удаляемых элементов (все с start если не указано).
  • item1, item2,...: необязательно. Элементы, добавляемые в массив из start индекса.

Возвращает: массив с удаленными элементами (пустой массив, если ни один не удален)

Изменить исходный массив: Да

Примеры:

const array = [1,2,3,4,5];

// Remove first element
console.log('Elements deleted:', array.splice(0, 1), 'mutated array:', array);
// Elements deleted: [ 1 ] mutated array: [ 2, 3, 4, 5 ]

// array = [ 2, 3, 4, 5]
// Remove last element (start -> array.length+start = 3)
console.log('Elements deleted:', array.splice(-1, 1), 'mutated array:', array);
// Elements deleted: [ 5 ] mutated array: [ 2, 3, 4 ]

Ответ 6

Splice and Slice - это встроенные команды Javascript, а не команды AngularJS. Slice возвращает элементы массива из "start" до тех пор, пока не будут заданы "end". Splice мутирует фактический массив и начинается с "start" и сохраняет количество указанных элементов. В Google есть много информации об этом, просто выполните поиск.

Ответ 7

сращивание и усиление удалить элемент массива по индексу

index = 2

//splice & will modify the origin array
const arr1 = [1,2,3,4,5];
//slice & won't modify the origin array
const arr2 = [1,2,3,4,5]

console.log("----before-----");
console.log(arr1.splice(2, 1));
console.log(arr2.slice(2, 1));

console.log("----after-----");
console.log(arr1);
console.log(arr2);

let log = console.log;

//splice & will modify the origin array
const arr1 = [1,2,3,4,5];

//slice & won't modify the origin array
const arr2 = [1,2,3,4,5]

log("----before-----");
log(arr1.splice(2, 1));
log(arr2.slice(2, 1));

log("----after-----");
log(arr1);
log(arr2);

Ответ 8

//splice
var array=[1,2,3,4,5];
console.log(array.splice(2));

//slice
var array2=[1,2,3,4,5]
console.log(array2.slice(2));


console.log("----after-----");
console.log(array);
console.log(array2);

Ответ 10

Метод JavaScript-массива splice() в качестве примера

Пример 1 от tutsmake -Remove 2 элемента из индекса 2

  var arr = [ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" ]; 

 arr.splice(1,2);

 console.log( arr ); 

Ответ 11

Другой пример:

[2,4,8].splice(1, 2) -> returns [4, 8], original array is [2]

[2,4,8].slice(1, 2) -> returns 4, original array is [2,4,8]