1. 程式人生 > >js中slice、splice用法與區別

js中slice、splice用法與區別

delet 內容 title pan ont 指定 至少 一個 拷貝

1.slice(start,end)(參數可選)

slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。原始數組不會被修改。

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘] var b = a.slice(0, 1) console.log(a); //[‘a‘, ‘b‘, ‘c‘, ‘d‘] console.log(b); //[‘a‘]

不傳參數,默認從0開始,可以復制數組:

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘];var c = a.slice();//復制原數組(淺復制)。
console.log(a); //[‘a‘, ‘b‘, ‘c‘, ‘d‘];
console.log(c);//[‘a‘, ‘b‘, ‘c‘, ‘d‘];

參數可以是負數,begin為負數表示從原數組倒數第幾位開始復制,如果不傳end,復制到數組末尾。如果end大於數組長度,依然復制到數組結尾。

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘];var d = a.slice(-2);
console.log(a); //[‘a‘, ‘b‘, ‘c‘, ‘d‘];
console.log(d); //[‘c‘, ‘d‘];

end為負數,表示在倒數第幾位結束復制,不包括end。

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘];
 var e = a.slice(1, -1);
 console.log(e); 
//[ ‘b‘, ‘c‘]

slice() 方法還可以將類數組轉換成數組

function list() {
  return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]

或者

function list() {
  return [].slice.call(arguments) 

}
var list1 = list(1, 2, 3); // [1, 2, 3]

2.splice(start, deleteCount, item1, item2, ...) 方法通過刪除現有元素和/或添加新元素來更改一個數組的內容。而slice()不會修改原數組

start:(必選)

指定修改的開始位置(從0計數)。如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組倒數第幾位(從1計數)。

deleteCount:(可選)

整數,表示要移除的數組元素的個數。如果 deleteCount 是 0,則不移除元素。這種情況下,至少應添加一個新元素。如果 deleteCount 大於start 之後的元素的總數,則從 start 後面的元素都將被刪除(含第 start 位)。
如果deleteCount被省略,則其相當於(arr.length - start)。

item1, item2, ... (可選)要添加進數組的元素,從start 位置開始。如果不指定,則 splice() 將只刪除數組元素。

var a = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
var b = a.splice(0) //deleteCount被省略,相當於(a.length - start)。

console.log(a); //[];
console.log(b); //[‘a‘, ‘b‘, ‘c‘, ‘d‘];

var c = [‘a‘, ‘b‘, ‘c‘, ‘d‘];
var d = c.splice(-1,1);
console.log(c); //[‘a‘, ‘b‘, ‘c‘];
console.log(d); //
[‘d‘];

var e = [‘a‘, ‘b‘, ‘c‘, ‘d‘]; var f = e.splice(1, 5);//deleteCount 大於start 之後的元素的總數 console.log(e); //[‘a‘]; console.log(f); //[‘b‘, ‘c‘, ‘d‘]; var h = [‘a‘, ‘b‘, ‘c‘, ‘d‘] var l = h.splice(1, 2, ‘x‘)//‘x‘替換刪除掉的字符 console.log(h); //[‘a‘, ‘x‘, ‘d‘] console.log(l); //[‘b‘, ‘c‘]

js中slice、splice用法與區別