为什么数组为空

彼得·克

我刚刚开始学习Unity3D javascript,这是我第一次尝试学习,试图复制我拥有的随机的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");
}

}

我在打印中得到以下信息:

theCardArray:返回,D2,D3,D4,D5,D6,D7,D8,D9,D10,DJ,DQ,DK

A)计数dupeArray:13

B)计数dupeArray:13

'#1'

C)计数dupeArray:0

在B)dupeArray有13个实体,在C)dupeArray为空!

有人可以向我解释为什么数组在C)为空吗?

顺便说一句,我知道Unity3D中还有其他方法可以实现相同的目的,但这是学习的方法!

我为此提出的最终的,真正的解决方案是:

通过以下方式致电ShuffleThis:

arr = ShuffleThis(arr);

随机功能:

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;
}

来源:使用UnityScript进行Fisher-Yates随机播放

乔纳森·迈尔斯

这是因为数组dupeArray只是对原始数组的引用theCardArray,所以当您清除原始数组时,您还将清除重复的数组。引用。

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

var dupeArray = theCardArray.slice(0);

另外,也可以使用jQuery扩展方法来完成此操作...

var dupeArray = $ .extend(true,[],TheCardArray);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell阵列范围;为什么我的数组为空?

来自分类Dev

为什么Aeson将()编码为空数组?

来自分类Dev

为什么数组在响应中总是为空?

来自分类Dev

Powershell阵列范围;为什么我的数组为空?

来自分类Dev

为什么while循环后数组为空?

来自分类Dev

为什么FormData为空?

来自分类Dev

为什么打印为空?

来自分类Dev

为什么UITableView为空?

来自分类Dev

为什么OutputDebugString为空

来自分类Dev

为什么我的空数组不为空?

来自分类Dev

在每个循环中填充数组后,为什么数组为空?

来自分类Dev

为什么数组 (collCells) 在 swift 中从不同的 ViewController 传递数组元素时显示为空?

来自分类Dev

为什么404或其他自定义IIS错误页面中的POST数组为空?

来自分类Dev

为什么从字符串返回的空数组在golang中的长度为1?

来自分类Dev

为什么我的数组(日期和日期之间的sql)为空?

来自分类Dev

为什么404或其他自定义IIS错误页面中的POST数组为空?

来自分类Dev

(为什么)在for循环之前我应该测试一个数组是否为空?

来自分类Dev

PHP为什么我的全局数组在扩展类中为空

来自分类Dev

当我尝试打印封面数组时,为什么我的输出为空?

来自分类Dev

为什么从用户请求另一个输入后字符数组为空?

来自分类Dev

为什么自动装配bean为空?

来自分类Dev

为什么COMPOSER_HOME为空?

来自分类Dev

为什么jqueryval bundle渲染为空?

来自分类Dev

为什么节点的全局对象为空?

来自分类Dev

为什么我的jQuery空为无效?

来自分类Dev

为什么我的HttpPostedFileBase总是为空?

来自分类Dev

为什么ReferencedSymbol的位置为空?

来自分类Dev

为什么JsonHttpContent的输出为空?

来自分类Dev

为什么我的向量为空?

Related 相关文章

  1. 1

    Powershell阵列范围;为什么我的数组为空?

  2. 2

    为什么Aeson将()编码为空数组?

  3. 3

    为什么数组在响应中总是为空?

  4. 4

    Powershell阵列范围;为什么我的数组为空?

  5. 5

    为什么while循环后数组为空?

  6. 6

    为什么FormData为空?

  7. 7

    为什么打印为空?

  8. 8

    为什么UITableView为空?

  9. 9

    为什么OutputDebugString为空

  10. 10

    为什么我的空数组不为空?

  11. 11

    在每个循环中填充数组后,为什么数组为空?

  12. 12

    为什么数组 (collCells) 在 swift 中从不同的 ViewController 传递数组元素时显示为空?

  13. 13

    为什么404或其他自定义IIS错误页面中的POST数组为空?

  14. 14

    为什么从字符串返回的空数组在golang中的长度为1?

  15. 15

    为什么我的数组(日期和日期之间的sql)为空?

  16. 16

    为什么404或其他自定义IIS错误页面中的POST数组为空?

  17. 17

    (为什么)在for循环之前我应该测试一个数组是否为空?

  18. 18

    PHP为什么我的全局数组在扩展类中为空

  19. 19

    当我尝试打印封面数组时,为什么我的输出为空?

  20. 20

    为什么从用户请求另一个输入后字符数组为空?

  21. 21

    为什么自动装配bean为空?

  22. 22

    为什么COMPOSER_HOME为空?

  23. 23

    为什么jqueryval bundle渲染为空?

  24. 24

    为什么节点的全局对象为空?

  25. 25

    为什么我的jQuery空为无效?

  26. 26

    为什么我的HttpPostedFileBase总是为空?

  27. 27

    为什么ReferencedSymbol的位置为空?

  28. 28

    为什么JsonHttpContent的输出为空?

  29. 29

    为什么我的向量为空?

热门标签

归档