slice() 与splice()的区别

title: "slice() 与splice()的区别"
id: 271
date: :39
tags:

categories:


array.slice(start, end)方法是对array中的一段做浅复制,复制的元素从 start 开始,到 end 为止,但是不包括 end,函数返回这一段字数组。

    var a = [1, 2, 3];
  • end省略时,表示提取start及其后面的所有成员。
var b = a.slice(1);//b = [2,3]
  • 如果两个参数中的任何一个为负,该参数,假设为 -n 表示的是从数组尾开始倒数的第n个成员。
var c = a.slice(-3, -1);//c = [1, 2]
var d = a.slice(-3, 1 );//d = [1]

注:如果你选的成员的顺序有悖于数组(即从后往前取),则会返回一个新的空数组。

var e = a.slice(-1, -3);//e = []
var f = a.slice(-1, 3);//f = []
  • 如果 start 大于array.length,则返回新的空数组。
var g = a.slice(4,n);//g = []
  • 最重要的一点,slice()不会影响到原数组
a;//[1, 2, 3]

array.splice(start, deleteCount, item1, item2, ...)一般用于对数组进行插入和去除成员的操作。item1, item2...为可选参数。start是要去除的成员的起点,deleteCount是要去除的个数。如果有item,就从start的位置开始插入。它返回一个包含被去除的成员的数组,如果没有就返回空数组。

var a = ['a', 'b', 'c'];
var r = a.splice(0, 2, 'hi', 'hello');//r = ['a,' 'b']
a;//['hi', 'hello', 'c']

splice()会影响原数组

  • end省略时,表示提取start及其后面的所有成员。
var a = ['a', 'b', 'c'];
var r = splice(1);//r = ['b', 'c']

注:省略第二个参数讲返回空数组,当然第二个参数为'',将带来语法错误。

  • 参数中出现负数,以及start 大于array.length时,与slice()类似。
comments powered by Disqus