sách gpt4 ai đã đi

javascript - 在数组中向前和向后选择 X 量,如果需要循环到开始和结束

In lại 作者:行者123 更新时间:2023-11-29 19:46:17 29 4
mua khóa gpt4 Nike

我需要在给定数组索引和范围的情况下,在返回新索引的数组中向前循环 X 量并向后循环 X 量。

如果循环向前到达数组的末尾,它将在数组的开头继续。如果循环在向后时到达开头,它会在数组末尾继续。

例如,数组:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

给定索引 8 和范围 3,该函数将返回 [5, 6, 7 ,8, 9, 0, 1]

或者,给定索引 1 和范围 3,它将返回 [8, 9, 0, 1, 2, 3, 4]

我尝试编写一个解决方案,但它只适用于固定范围的数字,而且非常粗糙。只是想知道是否有一种简洁的方法可以实现这一目标。首选 Javascript 解决方案,但如果需要,我很乐意翻译另一种语言的逻辑。

Cảm ơn.

1 Câu trả lời

使用模数这很容易:

var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
index = 8,
n = 3;

var result = [];

for (var i = index - n, len = array.length; i <= index + n; i++) {
result.push(array[(i + len) % len]);
}

console.log(result);

编辑 JSFiddle:http://jsfiddle.net/cmymS/

本例中模运算符的解释:

模运算符处理越界。在 for 循环内部,Tôi是数组中的“虚拟”索引,可以小于 0 或 >= len .您可以将其视为在实际数组的左侧和右侧都有无限重复的数组。如果i < 0 ,我们正在访问左侧的虚拟阵列之一,如果 i >= len ,我们正在访问右侧的虚拟阵列之一。索引转换(i + len) % len然后处理将“虚拟”索引转换回实际数组索引。

有两个边界条件和访问“正常”索引的情况:

Một) i < 0 :考虑例如i = -3 .

(i + len)会将位置移动一整个数组,以便我们在右侧的虚拟数组中工作,但指向相同的元素。自 len - 3 起模数无效小于 len .

b) i >= len :考虑例如i = len + 4

(i + len)会将数组的位置向右移动。在我们的示例中,(i + len)sẽ là (len + 4 + len)但是模抵消了这些变化,所以我们得到 4 .

c) Tôi是原始数组中的有效索引 (i + len)将向右移动一个数组的位置,但这由自 0 <= i < len 以来的模数重置. (i + len) % len = i .

关于javascript - 在数组中向前和向后选择 X 量,如果需要循环到开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358382/

29 4 0
Bài viết được đề xuất: javascript - meteor 铁路由器: cancel a route
Bài viết được đề xuất: javascript - 将球体上的 3d 点转换为 UV 坐标
Bài viết được đề xuất: javascript - 尾随下划线以外的变量命名约定
Bài viết được đề xuất: javascript - 高度不是函数
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com