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中排序多维数组(按字母顺序)