Сложение всех элементов двух массивов.
Приветствую. Я новичок в JS и не совсем понимаю, как работать с массивами. Передо мной стоит задача: сложить соответствующие элементы двух массивов и создать из них третий. Например: у нас есть два массива
var arr = [1, 5, 4] var arr2 = [4, 3, 2] Значит, третий массив должен быть с данными [5,8,6]. Как можно такое реализовать? Желательно с пояснениями. |
sharun, по хорошему вам стоит начать с учебника, т.к. не разобравшись в основах дальше будет все сложнее и сложнее...
var arr = [1, 5, 4], arr2 = [4, 3, 2], arr3 = []; for (i=0; i < arr.length; i++) { // цикл по всем элементам массива(-ов) (в данном случае учитывается что массивы равны по длине) arr3.push(arr[i]+arr2[i]); // метод push() добавляет элемент(-ы) в конец массива, в данном случае сумму i-ых элементов первого и второго массивов } alert(arr3); |
Спасибо, учту.
|
более правильный способ)
var arr = [1, 5, 4] var arr2 = [4, 3, 2] var arr3 = arr.map(function(value, index){ return value + arr2[index] }) alert(arr3) п.с. правильный потому что map семантически говорит человеку о том что щас будет происходить, а код функции говорит как именно это будет происходить. |
Maxmaxmaximus3, но не забывай говорить, что данный метод в IE по умолчанию отсутствует...(((
|
правильно поддерживать текущую версию браузера и предпоследнюю, щас 11, предпоследняя 10, девятку уже можно не поддерживать но И ТАМ метод был. ты немного в прошлом застрял парень)
|
:)
var arr = [1, 5, 4] var arr2 = [4, 3, 2] alert((+arr.join('')+ +arr2.join('')+'').split('')) |
Maxmaxmaximus3, мб мб...но как ни крути на Windows 8 люди не тянутся переходить...а в 7-ке по умолчанию IE 8 к сожалению(((
|
Сколько процентов людей использует ie8?
Сколько из них делают это потому что домохозяйки а не потому что они на работе а там админ не разрешает менять? вот и поговорили Цитата:
|
рони, очевидно, твой способ будет работать только если сумма каждой пары не перевалит за десятку. И беда если первые пары будут нулями.
|
danik.js, раз очевидно зачем говоришь?
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Ребят, о чём вы говорите? Нужно поддерживать свою аудиторию, а не сферического коня в вакууме. В Китае например активно юзается ИЕ6, но это же не значит, что ВСЕ сервисы нужно делать под ИЕ6. К примеру большинство сервисов Яндекса тестируется сейчас под ИЕ10/11 (я это знаю, т.к. сам работал там), а остальные объявлены не поддерживаемыми, тоже самое в Гугл.
Поддерживаются только те сервисы, где это критично, а слепой грейсфул деградейшн - это идиотизм. Нормально - это анализировать свой сервис и аудиторию, и составлять ТЗ исходя из этого. Рассказ про одного богатого клиента с ИЕ6 который зашёл на магазин цветов - это бредни бестолковых менеджеров :D Так можно и поддержку Мозаика сделать, а что, вдруг самый богатый человек использует его и непременно захочет зайти на ваш сайт. |
Цитата:
Цитата:
в последнем выборка достаточно велика, т.к. закупка новой системы означает также и апгрейд железа (не во всех случаях)...'"так зачем платить больше?" (c) реклама', если на компах установлено 512Мб памяти для запуска Word, Excel, блокнота и еще пятка специфического софта... |
Цитата:
Цитата:
|
Цитата:
Цитата:
но ИМХО...ориентироваться на IE8 смысл есть... |
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Ой, а можешь пример на скорую руку вспомнить? =) и сколько платили
|
Цитата:
Прост когда договариваешься о работе, нужно заранее эти вещи обсудить, чтобы потом внезапно не всплыло, что он думал, что всё должно быть включено заранее. А если человек хочет и платит за это, то кто я такой чтобы его отговаривать?) Зачем мне знать зачем ему это нужно: может и вправду нужно, а может и нет, какая разница :) |
Цитата:
|
Цитата:
Внутри цикла по заданному i берем элементы массивов arr[i]+arr2[i], т.е. arr[0]+arr2[0], arr[1]+arr2[1] ..... |
Цитата:
Цикл for после каждой итерации увеличивает значение переменной i на 1. Значение переменной i будет являться корректным ключом для обоих массивов. ps. не видел поста Dilettante_Pro. |
Цитата:
|
Не очень удачный пример. i вообще не определена.
var arr1 = [1, 5, 4], arr2 = [4, 3, 2, 5], arr3 = []; var length = Math.max(arr1.length, arr2.length); for(var i = 0; i !== length; i++) { arr3.push((i in arr1 ? arr1[i] : 0) + (i in arr2 ? arr2[i] : 0)); } alert( arr3 ); |
Часовой пояс GMT +3, время: 13:02. |