javascript - 从数组(切片)中提取 x 项,但如果到达末尾则从头继续

标签 javascript arrays slice

假设我有:

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/

相关文章:

javascript - 如何在图片悬停时在 CSS 中创建分离动画?

javascript - 是否可以在 QWebView 中从 JavaScript 调用 C++ 函数?

jquery - 如何在 jQuery 中使用 $.each 更新数组

go - 在 Go 中按子数组值对 slice 进行分组

javascript - 附加 html 中的按键

python - NumPy:按 np.array 过滤行

javascript - 过滤特定值的嵌套数组

python - 使用索引值列表对 pandas 多索引数据帧进行切片

string - 如何使用 unsafe 从没有内存复制的字符串中获取字节 slice

javascript - 如何通过输入字段使用 React JS 更新 Highcharts