我正在进行一些测验,我有一个看起来像这样的数组:let a = [1, 3, 4, 2]
现在我想知道如何创建一个循环,返回三个带有2个交换值的新数组,即:(a[i] swapped with a[i+1]
)
我希望得到以下3个数组:
为此创建循环的方法是什么?我一直在尝试使用map函数循环数组并交换值,但发现我只是让自己感到困惑。任何建设性的方法/解决方案以及对此测验的解释都将不胜感激。
答案 0 :(得分:2)
循环中的地图是你应该需要的全部
let a = [1, 3, 4, 2];
let r = [];
for (let i = 0; i < a.length - 1; i++) {
r[i] = a.map((v, index) => {
if(index == i) return a[i+1];
if(index == i + 1) return a[i];
return v;
});
}
console.log(r);
&#13;
答案 1 :(得分:1)
使用简单的for
循环:
let a = [1, 3, 4, 2],
result = [];
for(let i = 0; i < a.length - 1; i++) { // notice that the loop ends at 1 before the last element
let copy = a.slice(0); // copy the array
let temp = copy[i]; // do the swaping
copy[i] = copy[i + 1];
copy[i + 1] = temp;
result.push(copy); // add the array to result
}
console.log(result);
&#13;