3

所以我工作的代码是这样的:

var name:String = "Cashier";
var data:String = "Pay";

arr.push({name:tmpName, data:tmpData});

name、tmpName、data 和 tmpData 都是变量。然而,这显示为“名称”和“数据”是关键,而不是“收银员”和“支付”

但是,tmpName 和 tmpData 设置正确。

任何帮助将不胜感激。

4

2 回答 2

2

您需要对动态命名的键使用方括号表示法:

var object:Object = {};
object[name] = tmpName;
object[data] = tmpData;

arr.push(object);
于 2013-06-27T01:39:04.720 回答
1

我正在做一个 PHP 到 AS3 的代码转换,我创建了这个函数来帮助我使用动态键声明的关联数组(它应该在 JavaScript 中工作,只需进行一些更改)。它也可能对您有所帮助。

function array(... keysAndValues):Object // Emulates PHP's associative arrays
{
    var obj:Object = {};
    if (keysAndValues.length % 2 != 0)
    {
        throw new Error('The number of arguments of array() must be even. To create a non-associative array, use "new Array()" or "[]".');
    }
    for (var i:int = 0; i < keysAndValues.length; i += 2)
    {
        obj[keysAndValues[i]] = keysAndValues[i + 1];
    }
    return obj;
}

这样,如果我在字符串中有键和值...

var key1:String = 'FirstKey', value1:String = 'aaaaa';
var key2:String = 'SecondKey', value2:String = 'bbbbb';

我只能做...

var myAssoc:Object = array(
    key1, value1,
    key2, value2
);

这与 PHP 的语法非常相似:

$myAssoc = array(
    $key1 => $value1,
    $key2 => $value2
);

因此,当使用此 array() 方法时,您只需将 PHP assoc 数组中的“=>”替换为“,”即可。只要确保参数的数量是偶数,并且不要混淆键和值,因为它是键,值,键,值,...

您可以将这种小写array()方法用于类似 PHP 的关联数组,并将 AS3 的常规大写new Array()声明用于数字数组(或仅使用[])。请记住,当使用小写字母时,array()您实际上得到的是一个对象,而不是一个数组,因此您应该声明将其相应地存储为对象的变量。

于 2016-04-08T14:20:23.367 回答