【问题标题】:Actionscript, hasOwnProperty() of multidimensional arraysActionscript,多维数组的hasOwnProperty()
【发布时间】: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 个元素初始化时,你会怎么做?

标签: arrays actionscript-3 multidimensional-array actionscript


【解决方案1】:

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

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

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

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

【讨论】:

  • 没错,只是在这种情况下 4 是嵌套数组的长度而不是第一个元素
  • @fsbmain 是的,你是对的。我忘记了 AS3 的数组构造函数采用了初始长度 :-)
猜你喜欢
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2013-03-11
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多