Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.04.2016, 23:26
Интересующийся
Отправить личное сообщение для AlexHutor Посмотреть профиль Найти все сообщения от AlexHutor
 
Регистрация: 25.03.2016
Сообщений: 12

Сообщение от рони Посмотреть сообщение
AlexHutor,
зачем 88 раз заполнять нулевую ячейку? и зачем условие?
рони,
Вы можете предложить более лаконичное решение?

Осталась у меня одна проблема. После округления до двух знаков после запятой некоторые числа получились целые или с одним знаком после запятой, а хотелось бы иметь, к примеру, 1.70 вместо 1.7
Ответить с цитированием
  #12 (permalink)  
Старый 09.04.2016, 23:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

AlexHutor,
var arr = [5.94];
for (var i = 1; i < 88; i++) {arr[i] = arr[i-1]*1.059526}
Ответить с цитированием
  #13 (permalink)  
Старый 09.04.2016, 23:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от AlexHutor
а хотелось бы иметь, к примеру, 1.70 вместо 1.7
вам дали ссылку про округления, видимо вы плохо прочли.
Ответить с цитированием
  #14 (permalink)  
Старый 10.04.2016, 00:25
Интересующийся
Отправить личное сообщение для AlexHutor Посмотреть профиль Найти все сообщения от AlexHutor
 
Регистрация: 25.03.2016
Сообщений: 12

Сообщение от рони Посмотреть сообщение
AlexHutor,
var arr = [5.94];
for (var i = 1; i < 88; i++) {arr[i] = arr[i-1]*1.059526}
рони,
спасибо большое!

С округлением тоже всё нормально, действительно невнимательно читал.
Ответить с цитированием
  #15 (permalink)  
Старый 13.04.2016, 20:04
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Сообщение от рони Посмотреть сообщение
сделай непустой
var arr = new Array (88);

var result = arr.reduce(function(prev, next) {
   next = (prev * 1.059526);
   arr.push(next);
}, 5.94);

alert(arr);


Рони, помогите, пожалуйста, разобраться.

1. arr - создали пустой массив с длиной 88
2. В конце функции задали первое число в массиве (5.94)
3. Начали обрабатывать массив: каждое последующее число - это произведение предыдушего числа на 1.059526
4. Вычислили следующее число (next), добавили его в исходный массив -arr.push(next)
5. Вывели alert'ом получившийся массив arr - не получилось.
Ответить с цитированием
  #16 (permalink)  
Старый 13.04.2016, 20:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Alexander Belov,
где return??? но и он бесполезен так как
Цитата:
Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.
это для всех встроенных методов перебора.
нужен пункт 1 сначала выполнить сделать не пустой массив

Последний раз редактировалось рони, 13.04.2016 в 20:19.
Ответить с цитированием
  #17 (permalink)  
Старый 13.04.2016, 20:22
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

рони,
var arr = new Array (88);
arr.push(5.94);
 
var result = arr.reduce(function(prev, next) {
   next = (prev * 1.059526);
   arr.push(next);
  
    return arr;
}, 5.94);
 
alert(arr);


Отредактировал предыдущий вариант. Срабатвает непонятно как-то.

Судя по статье вот тут, ожидаемо было увидеть в массиве изначально в качестве первой цифры 5.94, т.к. мы её добавили в конце (таблица и код сразу над секцией Examples в статье)

Последний раз редактировалось Alexander Belov, 13.04.2016 в 20:40.
Ответить с цитированием
  #18 (permalink)  
Старый 13.04.2016, 20:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Alexander Belov,
<script>
var arr = new Array (88+1).join(" ").split("");
arr.reduce(function(prev, next, i) {
  arr[i] = prev.toFixed(2);
  return prev *= 1.059526
}, 5.94);

document.write(arr.join("<br>"));

  </script>
Ответить с цитированием
  #19 (permalink)  
Старый 13.04.2016, 21:08
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

рони,
Благодарю!
Но появились новые вопросы:
1. Почему при создании мы задаём длину 88+1, а в итоге получаем всё равно 88. Потому что функция возвращает всегда предыдущий элемент массива и чтобы вернуть 88, нужно обработать данные 89 раз?
2. join() и split() методы по умолчанию срабатывают на каждый элемент массива. С join() понятно, но почему если убрать split(), не выводится сплошная строка (не разделённая)? Ничего не выводится в принципе без этого метода.
Ответить с цитированием
  #20 (permalink)  
Старый 13.04.2016, 21:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Alexander Belov,
join заполняет промежутки между элементами, промежутков меньше на 1 чем элементов, элементы нам ненужны, их всёравно нет, поэтому увеличиваем число элементов на 1 , превратили массив из 89 несуществующих элементов в строку из 88 настоящих пробелов, с помощью split() разбили строку получили массив длиной 88.
Сообщение от Alexander Belov
не выводится сплошная строка
строка схлопывается она же сплошной пробел без размера.
<script>
var arr = new Array (88+1).join(" ");
document.write("|" + arr + "|<br>"); //строка из 88 обычных пробелов
arr = new Array (88+1).join("\u2007");
document.write("|" + arr + "|");  //строка из 88 пробелов размером с букву
  </script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить, когда четко соберется массив vas88811 Events/DOM/Window 11 26.02.2014 21:55
НОД более чем 2-х чисел Demath Общие вопросы Javascript 4 06.01.2013 05:27
Сгенерировать последовательность с помощью датчика случайных чисел Natasha Общие вопросы Javascript 0 30.03.2012 20:11
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30