суммирование значений в массиве - PullRequest
1 голос
/ 27 июня 2011

Как мне суммировать значения для моего массива? Вот вывод, если я отследил свой массив (я не смог найти аналог ActionScript PHP-функции print_r):

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;
}

Ответы [ 3 ]

0 голосов
/ 27 июня 2011

Посмотрите на создание Ассоциативного массива со строковым ключом .Прочитайте статью, и она должна начать.

0 голосов
/ 27 июня 2011
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 голосов
/ 27 июня 2011
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) также хорош.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...