首页 > 解决方案 > 基于单个索引从数组中获取 5 个元素的堆栈

问题描述

我试图弄清楚如何根据单个索引从数组中提取 5 个数组元素。索引将是这 5 个数组元素中间的元素。例如,如果我有这个数组:

let array = ['1', '2', '3', '4', '5', '6', '7']

和 2 的索引,我想让这个数组返回给我:

['1', '2', '3', '4', '5']

如果索引为 0,我想将此数组返回给我:

['6', '7', '1', '2', '3']

如果索引是 5,我想把这个数组返回给我:

['4', '5', '6', '7', '1']

我希望我能够传达我正在尝试做的事情。我希望与索引对应的元素位于数组的中间,并且还附加了 2 个前一个元素和 2 个下一个元素。

如您所见,当索引位于数组的末尾并且在索引之后没有要附加的元素时,我从头开始附加元素。反之亦然,当索引位于数组的开头时,我从数组的结尾添加元素。这是我想不通的部分。

标签: javascript

解决方案


您可以添加索引处理。如果索引小于 0 = 将数组长度添加到索引,如果索引大于数组长度 - 从中​​减去数组长度。它会解决你的问题

let array = ['1', '2', '3', '4', '5', '6', '7']

function getArr(arr, idx) {
let newArr = []

     for(let i= idx -2; i <= idx +2; i++) {
       let currentindex = i
       if(i < 0) {
         currentindex = i + arr.length
       } else if( i >= arr.length) {
          currentindex = i - array.length
       }
       newArr.push(arr[currentindex])
     }
return newArr
}

console.log(getArr(array, 0))
console.log(getArr(array, 2))
console.log(getArr(array, 5))


推荐阅读