Actionscript,多维数组的hasOwnProperty()

Posted

技术标签:

【中文标题】Actionscript,多维数组的hasOwnProperty()【英文标题】:Actionscript, hasOwnProperty() of multidimensional arrays 【发布时间】:2016-03-03 12:31:58 【问题描述】:

我正在尝试检查一个键是否存在于多维数组中。 以下代码是我的示例:

var tiles:Array = new Array(
                    new Array(4),
                    new Array(4),
                    new Array(4),
                    new Array(4)
                 );
if(test.hasOwnProperty(2)) 
  trace('True');
 else 
  trace('False');

这将返回 True,正如预期的那样,因为键 2 确实存在于数组“test”中。

但是,如果我尝试对数组中的任何数组执行此操作,代码总是返回 False。

var tiles:Array = new Array(
                    new Array(4),
                    new Array(4),
                    new Array(4),
                    new Array(4)
                 );
if(test[1].hasOwnProperty(2)) 
  trace('True');
 else 
  trace('False');

我希望任何人都可以对此有所了解,我错过了什么? 也许有另一种方法来做这个检查? 非常感谢任何帮助,谢谢! :)

编辑:

将我的数组定义更改为:

var tiles:Array = new Array(
                    new Array('','','',''),
                    new Array('','','',''),
                    new Array('','','',''),
                    new Array('','','','')
                 );

当然,问题解决了!谢谢大家的帮助:)

【问题讨论】:

你是否在内部数组中添加了一些东西?内部数组的大小为 4,但如果其中没有元素,那么这将返回 false RE:您的编辑。当你的内部数组想要用 500 个元素初始化时,你会怎么做? 【参考方案1】:

您的内部数组在位置 2 没有任何值,因此您的结果是预期的。它们有四个空槽。

对于数组,它们是顺序数据,不打算用作键:值存储,您可能会发现特定于数组的工具更适合您尝试做的事情,例如:

if (test[1].length >= 2)

通过这种方式,您将获得如您所愿的true

【讨论】:

没错,只是在这种情况下 4 是嵌套数组的长度而不是第一个元素 @fsbmain 是的,你是对的。我忘记了 AS3 的数组构造函数采用了初始长度 :-)

以上是关于Actionscript,多维数组的hasOwnProperty()的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 在AS3中排序多维数组(按字母顺序)

深度复制

js 巧妙去除数组中的重复项

在 ActionScript (3.0) 中干净地合并两个数组?

在 Actionscript 3 中链接两个数组

ActionScript 3.0 - 获取数组中相同值的计数