当我得到一个数组a
并且我想要修改一个元素和之后的元素?所以总是有成对的元素(i和i + 1)。
我想这样做3次。这些对看起来像这样:
a[0] and a[1], a[1] and a[2], a[2] and a[3]
我该如何解决这个问题? 感谢
答案 0 :(得分:1)
您可以使用for循环
for(let i = 0; i < a.length - 1; i++) {
a[i] = "modify";
a[i + 1] = "modify";
}
答案 1 :(得分:1)
如果处理3次,即在一次迭代中处理4个元素是强制性的,那么你应该检查数组是否至少有4个元素开始。
for(int i = 0; i < a.length - 3; i++) {
a[i] = 0; // do something
a[i+1] = 0; // do something
a[i+2] = 0; // do something
a[i+3] = 0; // do something
}
基本上,当你到达第4个最后一个元素时,你就会停止循环。
在这里,您将处理数组中间的元素,而不是数组中间两侧的元素。
如果您希望每个元素只处理一次,那么在for循环中将i递增4,以确保每个元素只处理一次。
要求不明确所以建议不同的选项,您需要在调试模式下尝试它们,以便您更好地学习它并实现更好的解决方案。
答案 2 :(得分:1)
您可以使用一点递归和不错的es6语法来执行此操作:
const myArr = [1, 2, 3, 4, 5, 6]
const pairValues = (arr, pos = 0, newArr = []) => {
// check if indexing is out of the bounds of the array
if (arr[pos + 1] === undefined) {
return newArr
}
newArr.push([arr[pos], arr[pos + 1]])
// recursively call pairValues function
return pairValues(arr, pos + 1, newArr)
}
// log result
console.log(pairValues(myArr)) // [[1,2],[2,3],[3,4],[4,5],[5,6]]
&#13;