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()表示取绝对值。
| 组合 (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: array, javascript, method, slice
文章字体大小:
Leave a Reply