答案 0 :(得分:1)
让我们假设您的可能值数组的长度为n(在我们的情况下[0,1,2,3,4]的长度为5)。镜子的整个长度将为2n-1:
possibleValues = [4, 3, 2, 1, 0, 1, 2, 3, 4]
现在,假设索引0处的值数组位于镜像(0)的中间,则必须使用公式算术运算
result[v] = possibleValues[((v + n - 1) % 2n - 1)]
现在,由于您的实际数组看起来像[0,1,2,3,4],因此您需要将可能值使用的索引转换为对您的实际数组更有用的内容:
possibleIndex = ((v + n - 1) % 2n - 1)
if (possibleIndex >= n) actualIndex = possibleIndex - n + 1
else possibleIndex = actualIndex = n = possibleIndex
答案 1 :(得分:0)
function mirrorArr(arr) {
let newArr = [];
newArr.length = arr.length * 3;
for(let i = 0; i < arr.length; i++) {
newArr[-arr[i]-1] = arr[i];
newArr[i] = arr[i];
newArr[i+arr.length] = arr.length-i-1;
}
return newArr;
}
let arr = [0, 1, 2, 3, 4];
let mirroredArr = mirrorArr(arr);
console.log(mirroredArr[-5]);
类似这样的技巧
答案 2 :(得分:0)
为达到预期效果,请使用以下使用扩展运算符和反向数组方法的选项
var arrOne = [0,1,2,3,4];
var result = []
var revArr = [...arrOne].reverse()
result = [...revArr,...arrOne, ...revArr]
console.log(result)