gpt4 book ai didi

javascript - 将变量 1 赋值给变量 2,将变量 2 赋值给变量 3 javascript

转载 作者:行者123 更新时间:2023-11-28 09:42:09 24 4
gpt4 key购买 nike

我有一个数组,我想根据某种模式对它们进行洗牌(我正在尝试用javascript制作一个rubics立方体)。我想将 value2 分配给值 1,将值 1 分配给值 3,将值 3 分配给值 2。我可以在 4 行代码内完成此操作,但是有更短的方法吗?像:

temp = var3; //make temporary variable
(var3 = var2) = var1;//put var2 in var3 and var3 in var1
var1 = temp;//put var3/temp in var1

我知道这种方式行不通,但是你们知道它的工作方式吗?这在循环 8 个变量时很有用。

谢谢, Storm 鲁迪。

最佳答案

如果您要处理两个以上的变量,最好使用数组,因为数组具有您可以使用的内置函数

var nums = [1,2,3]; // this is your array. it can have any length you want
// this is one line that does the magic
nums.push(nums.shift()); // to the left
nums.unshift(nums.pop()); // to the right

http://jsfiddle.net/wbKYY/2/
http://jsfiddle.net/wbKYY/4/

无论如何,关于您的评论。由于您将旋转的指针不是预先确定的,并且会有所不同,因此最好使用函数。
一个将迭代您定义的指针的函数。

function rotateArr(arr,pointers,dir) {
var narr = arr; // create a local copy we can use it
var savevalue;
if (dir == 1) { // rotate to the right
savevalue = narr[pointers[pointers.length-1]]; // save the last value
for(var i=pointers.length-2;i>=0;i--) {
narr[pointers[i+1]] = narr[pointers[i]];
}
narr[pointers[0]] = savevalue; // set the first value
} else { // rotate to the left
savevalue = narr[pointers[0]]; // save the first value
for(var i=0;i<pointers.length-1;i++) {
narr[pointers[i]] = narr[pointers[i+1]];
}
narr[pointers[pointers.length-1]] = savevalue; // set the last value
}
return narr;
}
// arr is the array of faces
// pointers is the elements which you want to rotate (an array)
// dir is either 1 or -1

您可以使用以下方式执行此功能

nums = rotateArr(nums,[pointers],[1,-1]);
// just some examples
nums = rotateArr(nums,[0,1,2,5],1);
nums = rotateArr(nums,[3,6,1,4],-1);

这是一个有效的示例: http://jsfiddle.net/w2jGr/

但是,如果您更喜欢使用只是数组方法的原型(prototype)函数,则可以定义一个属性并从那里访问它。

Object.defineProperty(Object.prototype, "rotateArr", { value: function(pointers,dir) {
var savevalue;
if (dir == 1) { // rotate to the right
savevalue = this[pointers[pointers.length-1]]; // save the last value
for(var i=pointers.length-2;i>=0;i--) {
this[pointers[i+1]] = this[pointers[i]];
}
this[pointers[0]] = savevalue;
} else { // rotate to the left
savevalue = this[pointers[0]]; // save the last value
for(var i=0;i<pointers.length-1;i++) {
this[pointers[i]] = this[pointers[i+1]];
}
this[pointers[pointers.length-1]] = savevalue;
}
}, enumerable : false});

从不建议修改对象的原型(prototype),但如果您不想要干净的代码并且想要可用性或可读性,那么这非常有用,因为您可以使用以下方式调用函数

nums.rotate([pointers],dir);

http://jsfiddle.net/w2jGr/1/

关于javascript - 将变量 1 赋值给变量 2,将变量 2 赋值给变量 3 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238535/

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