В чем разница между splice
и slice
?
$scope.participantForms.splice(index, 1);
$scope.participantForms.slice(index, 1);
В чем разница между splice
и slice
?
$scope.participantForms.splice(index, 1);
$scope.participantForms.slice(index, 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);
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]
Метод slice() возвращает копию части массива в новый объект массива.
$scope.participantForms.slice(index, 1);
Это НЕ изменяет participantForms
массив, но возвращает новый массив, содержащий один элемент найденный в index
позиции в исходном массиве.
Метод splice() изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые элементы.
$scope.participantForms.splice(index, 1);
Это позволит удалить один элемент из participantForms
массива в index
позиции.
Это нативные функции Javascript, AngularJS не имеет к ним никакого отношения.
Вот простой трюк, чтобы запомнить разницу между 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)
как о сокращении "указать длину", что второй аргумент должен быть длиной, а не индексом
Синтаксис 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 ]
Splice and Slice - это встроенные команды Javascript, а не команды AngularJS. Slice возвращает элементы массива из "start" до тех пор, пока не будут заданы "end". Splice мутирует фактический массив и начинается с "start" и сохраняет количество указанных элементов. В Google есть много информации об этом, просто выполните поиск.
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);
//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);
Это описано в следующей ссылке: http://www.tothenew.com/blog/javascript-splice-vs-slice/
Метод 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 );
Другой пример:
[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]