Front-end web developer——[to be a better man]
文章字体大小Font Size文章字体大小:12px, 14px
05

METHOD: Array::slice

为了研究Currying in Javascript,所以温习一下slice()方法。

Array.slice(begin[,end])

该slice方法返回数据的指定区段。该slice方法不会改变原始的数组,返回的是一个全新的数组拷贝,而不是原始数组引用,所以无论是改变原始数组还是新数组,双方均不受影响。该slice方法通过由零开始计算的数组下标来确定切割的部分,创建一个由下标begin开始,到下标end-1止的新数组(如果end未被指定,默认为最后一个元素)。如:
代码:

1
2
trees = ["oak", "ash", "beech", "maple", "sycamore"]
document.write(trees.slice(1,4))

输出:
ash,beech,maple
该slice方法的参数问题。如果使用负数的end,则返回由下标begin到下标length-ABS(end)-1(注:ABS(end)表示绝对值的end)的新数组;同理,使用负数的begin类同:下标为length-ABS(begin)。下面就一个数组simple,对其参数组合的情况作详细说明:

1
2
var simple=['a','b','c','d','e','f','g','h','i','j'];
var newArray=simple.slice(begin[,end])

说明,仅在这里,我们把simple的长度表示为length,目前length=10;把任何整数类型的参数称作any,其中包括任何形如’6′、2.3这样的能自转义成整数的类型;ABS()表示取绝对值。

Array.slice(begin[,end])的参数组合情况
组合 (begin[,end]) newArray的结果 备注
均为正数,且
begin<length, end>begin
begin=1,end=5 ['b','c','d','e']
均为正数,且
begin>length, end=any
begin=12,end=15 [ ] begin必须小于length
均为正数,且
begin=any, end=0
begin=2,end=0 [ ] end不能为0
均为正数,且
begin-end>=0
begin=5,end=4或begin=-5,end=-6 [ ] end必须大于begin
begin<length,
end未设置
begin=2, end值未设置 ['c','d','e','f','g','h','i','j'] end的默认值为最后一个元素的下标
begin为非整或
begin<0,end非0
begin=null, end=2 ['a','b'] begin为非整数或小于0时,当是0
begin或end为负者 begin=-8,end=-1
相当于
begin=2,end=9
['c','d','e','f','g','h','i'] 两者分别换算为:
newBegin=length-ABS(begin),
newEnd=length-ABS(end)
换算后的数值遵循上面的规定。

参考文献:
[1]http://www.devguru.com/Technologies/ecmascript/quickref/slice.html[英文]
[2]http://ebook.pastein.net/vbscript/js56jsmthslicearray.htm[中文]

Popularity: 59% [?]

 tags Tags: , , ,

respondLeave a Reply

:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?:

&| &amp;