所以我工作的代码是这样的:
var name:String = "Cashier";
var data:String = "Pay";
arr.push({name:tmpName, data:tmpData});
name,tmpName,data和tmpData都是变量。 然而,这显示为“名称”和“数据”是关键而不是“收银员”和“支付”
tmpName&但是,tmpData设置正确。
非常感谢任何帮助。
答案 0 :(得分:1)
您需要为动态命名的密钥使用方括号表示法:
var object:Object = {};
object[name] = tmpName;
object[data] = tmpData;
arr.push(object);
答案 1 :(得分: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关联数组中的“=&gt;”。只要确保参数的数量是偶数,你就不要混淆键和值,因为它是键,值,键,值...... ...
您可以将此小写array()
方法用于类似PHP的关联数组,并将AS3的常规大写new Array()
声明用于数值数组(或仅使用[]
)。请记住,当使用小写array()
时,你真的得到一个Object,而不是一个数组,所以你应该声明一个变量,它相应地将它存储为一个Object。