Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сумма всех элементов массива (http://www.flasher.ru/forum/showthread.php?t=209089)

vivado 10.10.2014 18:35

Сумма всех элементов массива
 
Всем привет,
Есть массив содержащий числа, как мне сложить их между собой и получить сумму?
Код AS3:

var arrayA:Array = [2,4,6];
var Summ:Number;
 
for (var i:int = 0; i < arrayA.length; i++)
{
        Summ = ?
}
trace (Summ);


belv 10.10.2014 18:38

Код AS3:

var arrayA:Array = [2,4,6];
var Summ:Number = 0;
 
for (var i:int = 0; i < arrayA.length; i++)
{
        Summ += Number(arrayA[i]);
}
trace (Summ);


Gerbert 10.10.2014 18:48

Код AS3:

var Summ:Number;

Название свойств-переменных не пишут с большой буквы.

belv 10.10.2014 19:08

Код AS3:

import flash.errors.IllegalOperationError;
var _arrayA:Array = [2,4,6,"для проверки"];
var _summ:Number = 0;
var _lengthArray:int = _arrayA.length;
for (var i:int = 0; i < _lengthArray; i++){
        if(isNaN(_arrayA[i])){
          throw new IllegalOperationError("Массив содержит не только числа!!!");
        }else{
                _summ += Number(_arrayA[i]);
        }
}
trace (_summ);


Gerbert 10.10.2014 19:16

Жара:)

Добавлено через 52 секунды
А где проверка на существование массива?

Добавлено через 2 минуты
И в else нужды нет.

Добавлено через 3 минуты
Начать с конца или начала разницы нет, значит можно и от for отказаться.

belv 10.10.2014 19:32

А где проверка на существование массива? - если массива нет, об этом позаботится компилятор, если массив пустой. цикл не выполнится.
И в else нужды нет. из той же оперы, как называть переменные.(Хороший тон)

Начать с конца или начала разницы нет, значит можно и от for отказаться. Не понял вопрос.

Gerbert 10.10.2014 20:13

Да это не вопросы, а cnt,! Вы так грамотно все расписали, что захотелось придраться с мелочами:)
Про for... Mo;yj было бы отказаться от него и написать
Код AS3:

while( length-- ){...};

А по второму Вашему ответу я не согласен, ведь пишут
Код AS3:

if( prop == value)return;
prop = value;

и ничего ужасного в этом нет.
А про первый, да Вы правы, но можно и от жутких элементов застраховаться и от ifelse отказаться при помощи Vector<Number>

belv 10.10.2014 20:37

Использовать Vector<Number> - это куда продуктивнее совет, чем:"Название свойств-переменных не пишут с большой буквы."
Я ничего не имею против того, что люди делают замечания, но когда это становится выше самого вопроса темы...
Использоват for или while - это опять же стиль разработчика. Мне for больше нравится.
По второму пункту ведь написал автор с большой буквы и ничего, работает. А вот читабельность пострадала.

dimarik 10.10.2014 21:17

Полноте, господа. Все в сад.

Для ТС: Vector.<Number>#forEach() еще можно пользовать, но не забывать, что NaN может быть значением типа Number.

nubideus 11.10.2014 16:43

все гораздо сложней

Код AS3:

var array:Array = [1, 2, 3, 4, 5];
var summ:Number = 0;
 
var len:uint = array.length;
for(var i:uint = 0; i < len; i++){
  var v:* = array[i];
  if(v == v && v is Number){
    summ += v;
  } else {
    summ = NaN;
    break;
  }
}

проблема в том, что есть valueOf, и если я начну делать сумму [new Date(), new Date()] то все очень плохо


Часовой пояс GMT +4, время: 23:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.