假设我有:
var array = [0,1,2,3,4,5,6,7,8,9]
我定义:
var itemsToExtract = 5
var startindex = 7
var direction = "forward"
我希望能够做到:
array.someMethod(startindex, itemsToExtract, direction)
得到
[7,8,9,0,1]
如果我将方向设置为“向后”(从右到左切片),我也希望它向后工作。
我不是太懒,已经尝试了一些东西,请看这里:http://jsfiddle.net/MkNrr/
如果有的话,我正在寻找“更整洁”的东西,还有这个方法的名称,这是一个已知问题吗?
背景:我正在尝试构建一个顺序预图像加载器(先加载一个图像 (src),然后再加载另一个图像)以供在图片库中使用。也许这样的图书馆已经存在了?
最佳答案
返回前向和后向数组的函数怎么样?这样你就不需要开关了。像这样:
function overslice(arr, idx, items) {
var fwd = arr.filter(function(v,i){ return i >= idx }).slice(0, items),
back = arr.filter(function(v,i){ return i <= idx }).slice(-items);
while (fwd.length < items) {
fwd = fwd.concat(arr).slice(0, items);
}
while (back.length < items) {
back = arr.concat(back).slice(-items);
}
return { fwd: fwd, back: back };
}
然后你可以像这样使用它:
var array = [0,1,2,3,4,5,6,7,8,9]
var result = overslice(array, 7, 5);
console.log(result.fwd, result.back); //=> [7, 8, 9, 0, 1] [3, 4, 5, 6, 7]
关于javascript - 从数组(切片)中提取 x 项,但如果到达末尾则从头继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850159/