Javascript 为什么数组是空的

Javascript 为什么数组是空的,javascript,unityscript,Javascript,Unityscript,我刚刚开始学习Unity3D javascript,这是我第一次尝试学习,尝试复制我拥有的shuffle Objective-C代码片段,我拥有以下代码: function Shuffle(theCardArray : Array) { var dupeArray = new Array(); var count = theCardArray.length; print("theCardArray: " + theCardArray); dupeArray = theCardArray;

我刚刚开始学习Unity3D javascript,这是我第一次尝试学习,尝试复制我拥有的shuffle Objective-C代码片段,我拥有以下代码:

function Shuffle(theCardArray : Array) {
var dupeArray = new Array();
var count = theCardArray.length;

print("theCardArray: " + theCardArray);


dupeArray = theCardArray;
    count = dupeArray.length;
print("A) Count dupeArray: " + count);
print("B) Count dupeArray: " + dupeArray.length);
theCardArray.Clear();

for (var i = 0; i < count; i++) {

    // Select random element between i and the end of the array to swap it
    var nElements = count - i;
    var n = Random.Range(0, nElements);

    print("#1");
    print("C) Count dupeArray: " + dupeArray.length);
    print("dupeArray: " + dupeArray);
    var dummyString = dupeArray[n];
    print("#2");

    theCardArray.Push(dummyString);
    print("#3");
}

}
洗牌功能:

function ShuffleThis(theCardArray : Array) : Array {

var size : int = theCardArray.length;

for (var i : int = 0; i < size; i++) {

    var indexToSwap : int = Random.Range(i, size);
    var oldValue = theCardArray[i];
    theCardArray[i] = theCardArray[indexToSwap];
    theCardArray[indexToSwap] = oldValue;
}

return theCardArray;
}
函数ShuffleThis(cardarray:Array):数组{
变量大小:int=cardarray.length;
对于(变量i:int=0;i

来源:

这是因为数组
DuperRay
只是对原始数组
CardArray
的引用,所以当您清除原始数组时,您也在清除重复数组;参考

为了解决您的问题,您应该克隆原始阵列,这可以使用像这样的切片来完成

var duperray=cardarray.slice(0)

或者,它也可以使用jQuery扩展方法来完成,如下所示

var duperray=$.extend(true,[],数组)


可以使用'var duperray=theCardArray.slice();'也
function ShuffleThis(theCardArray : Array) : Array {

var size : int = theCardArray.length;

for (var i : int = 0; i < size; i++) {

    var indexToSwap : int = Random.Range(i, size);
    var oldValue = theCardArray[i];
    theCardArray[i] = theCardArray[indexToSwap];
    theCardArray[indexToSwap] = oldValue;
}

return theCardArray;
}