javascript - 基于单个索引从数组中获取 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 个下一个元素。
如您所见,当索引位于数组的末尾并且在索引之后没有要附加的元素时,我从头开始附加元素。反之亦然,当索引位于数组的开头时,我从数组的结尾添加元素。这是我想不通的部分。
解决方案
您可以添加索引处理。如果索引小于 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))
推荐阅读
- selenium - 为什么使用 Selenium Web 驱动程序 (3.14.0) 在 IE 11 中拖放不起作用?
- reactjs - 卸载时状态不会重置
- reactjs - 通过材质ui ListItemText 组件访问值
- regex - 正则表达式未以 html 结尾
- html - 如何在 Angular 中将地图、过滤器等与 Observable 一起使用
- sql - 使用基于相同 ID 的特定行的值更新多行
- javascript - React js在组件内调用组件
- javascript - HTML电子邮件Gmail忽略样式填充和边距
- postgresql - Grafana 与 springboot 和 postgres 的集成
- content-management-system - 无头 CMS 的反面