键值对中的变量键

时间:2013-06-27 01:33:13

标签: actionscript-3

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

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

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

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

tmpName&但是,tmpData设置正确。

非常感谢任何帮助。

2 个答案:

答案 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。