总结数组中的值

时间:2011-06-27 01:16:48

标签: flex actionscript-3

如何总结数组的值?如果我跟踪我的数组,那么这是输出(我找不到PHP的print_r函数的actionscript):

for(var k:int=0; k<tempAC.length; k++){
    trace(tempAC[k].name);
    trace(tempAC[k].value);
    trace('-----------');
}

__OUTPUT__

Bob
3
-----------
Mary
5
-----------
Bob
12
-----------
Mary
1

如何构建一个总结Bob&amp;玛丽各自的价值观? 即输出将是:

Bob
15
------------
Mary
6
------------

我有(我尝试+ =对值进行求和):

for(var k:int=0; k<tempAC.length; k++){
   newAC['name']=tempAC[k].name;
   newAC['value']+=tempAC[k].value;
}

3 个答案:

答案 0 :(得分:0)

for(var k:int=0; k<tempAC.length; k++){
   newAC[tempAC[k].name]+=tempAC[k].value;
}

这样你就可以分别对每个名字求和,无论你有多少名字。

要查看输出: (什么是你的打印方法,我称之为echo

echo newAC['THE NAME YOU WANT'];

b.t.w我不知道Flash,但概念很好,语法(echo除外)也很好。

答案 1 :(得分:0)

看看创建Associative Array with a String Key。阅读文章,它应该让你开始。

答案 2 :(得分:0)

var tempAC:Array = [
    {name: "Bob", value: 3},
    {name: "Mary", value: 5},
    {name: "Bob", value: 12},
    {name: "Mary", value: 1}
];

/**
 * Combines values in objects that have identical names
 * @param ar The array to assess
 */
function combine(ar:Array):Array
{
    var hold:Array = [];
    var back:Array = [];

    var i:Object;
    for each(i in ar)
    {
        if(!hold[i.name]) hold[i.name] = i.value;
        else hold[i.name] += i.value;
    }

    var j:String;
    for(j in hold)
    {
        back.push({name: j, value: hold[j]});
    }

    return back;
}


var list:Array = combine(tempAC);

var i:Object;
for each(i in list)
{
    trace(i.name + ": " + i.value);
}

Output:
Bob: 15
Mary: 6