2011-06-27 13 views
1

配列の値をどのように集計しますか?ここで私は私の配列をたどる場合、出力は(私は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 
15 
------------ 
Mary 
6 
------------ 

(私は+ =は、値を合計してみます):

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

答えて

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 
0
for(var k:int=0; k<tempAC.length; k++){ 
    newAC[tempAC[k].name]+=tempAC[k].value; 
} 

あなたが個別にそれぞれの名前を合計しその方法に関係なく、どのように多くの名前はそこにあります。

出力表示するには:ところで(私には、Flashについての考えを持っていませんが、コンセプトは良いですが、構文 (あなたの印刷方法は、これまで何である、私はechoそれを呼ぶことにします)

echo newAC['THE NAME YOU WANT']; 

を除きますecho)も良いです。

+0

おかげで私は、私は多分、私が何か間違ったことをやっているが、私は元の値を取得し、チャート –

+0

にデータを使用できるように、「名前」と「値」であることを新たにAC上のキーを必要とし、合計ではない –