gpt4 book ai didi

javascript - 从循环数组中获取样本(indexA 到 indexB)

转载 作者:行者123 更新时间:2023-11-29 21:55:24 25 4
gpt4 key购买 nike

我有一个数组

var a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];

我使用这个数组的方式是它的开始就是它的结束,就像这样:

             0
1 15
2 14
3 13
4 12
5 11
6 10
7 9
8

http://en.wikipedia.org/wiki/Circular_buffer

数组长度也是一个长得多的数字

我想从中获取样本,例如,从一个索引获取到另一个索引,每次获取 n 项倒数。

所以如果你想得到的索引是 2,而 n 是 3 你会得到

a[0],a[1],a[2] // 0,1,2

可能用 slice 完成,或者最好通过循环收集它们..

但是如果我想要的索引是 1 或 0,那么如果 n 可以随时更改,我将如何获取最后一部分

执行此操作的简单方法是什么?


var a=[0,1,2,3,4,5,6,7,8,9,10];

var index=1;

var n=4;

var i=[n,0];

var b=[];

while(i[0]--){

b.unshift(
a[index-i[1]]!==undefined?a[index-i[1]]:a[a.length-Math.abs(index-i[1])]
);

i[1]+=1;

}

console.log(b); // [9, 10, 0, 1]

最佳答案

我会用 .slice() 这样做:

var a = [0,1,2,3,4,5,6,7,8,9,10];

function getFromCircArr(arr, i, n) {
var d = i + 1 - n;
return d < 0 ? arr.slice(d).concat(arr.slice(0, i + 1)) : arr.slice(d, i + 1);
};

getFromCircArr(a, 2, 3); // --> [0, 1, 2]
getFromCircArr(a, 1, 4); // --> [9, 10, 0, 1]

关于javascript - 从循环数组中获取样本(indexA 到 indexB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com