Узор для «Столбку общего» массива массивов -- javascript поле с участием arrays пол Связанный проблема

Pattern for “column total” of an array of arrays


8
vote

проблема

русский

Я ищу шаблон, чтобы получить итоги для каждого N-Th элемента массивов. Концептуально это было бы похоже на получение итогов столбцов таблицы данных.

 <код> var dataRows = [   [10, 11, 12, 13],   [20, 21, 22, 23],   [30, 31, 32, 33] ] // The outcome should be: // [ 60, 63, 66, 69]   

У меня был какой-то эквивалентный код Python на стороне сервера, но решил, что его следует обрабатывать на стороне клиента, таким образом, в JavaScript. Вот эквивалентный код Python:

 <код> awk0  

Как бы вы пойдете написать это? Я уверен, что код будет длиннее без zip, распаковки и списка понимания, но можно ли сделать элегантно? Также есть ли библиотеки, которые расширяют основную библиотеку JS?

Английский оригинал

I am looking for a pattern to get the totals for each n-th item of arrays. Conceptually this would be like getting column totals of a data table.

var dataRows = [   [10, 11, 12, 13],   [20, 21, 22, 23],   [30, 31, 32, 33] ] // The outcome should be: // [ 60, 63, 66, 69] 

I had some equivalent Python code on the server side, but decided it should be handled client side, thus in javascript. Here is the equivalent Python code:

[sum(i) for i in zip(*data_rows)] 

How would you go about writing this? I am sure the code will be longer without zip, unpack and list comprehension, but can it be done elegantly? Also are there libraries that extend the core library of JS?

</div
     

Список ответов

7
 
vote
vote
Лучший ответ
 

Просто повторяйте свои массивы:

 <Код> var dataRows = [    [10, 11, 12, 13],    [20, 21, 22, 23],    [30, 31, 32, 33]  ]    var result = [];    for(var i = 0; i < dataRows.length; i++){      for(var j = 0; j < dataRows[i].length; j++){          result[j] = (result[j] || 0) + dataRows[i][j];      } // ^ Add the current value to the proper position of `result`.  }    alert(JSON.stringify(result));  

как для второй части вашего вопроса:
Есть библиотеки, которые добавляют много функций манипуляций массива в JS. Посмотрите на Подчеркивание , например.

 

Just iterate over your arrays:

var dataRows = [    [10, 11, 12, 13],    [20, 21, 22, 23],    [30, 31, 32, 33]  ]    var result = [];    for(var i = 0; i < dataRows.length; i++){      for(var j = 0; j < dataRows[i].length; j++){          result[j] = (result[j] || 0) + dataRows[i][j];      } // ^ Add the current value to the proper position of `result`.  }    alert(JSON.stringify(result));

As for the second part of your question:
There are libraries that add a lot of array manipulation functions to JS. Take a look at Underscore, for example.

</div
 
 
         
         
6
 
vote

Игра с методами массива ES5:

 <код> var dataRows = [   [10, 11, 12, 13],   [20, 21, 22, 23],   [30, 31, 32, 33] ];  dataRows.reduce(function(a, b) {   return a.map(function(el, i) {     return el + b[i];   }); }); // [60, 63, 66, 69]   

Это попытка дать ключ, поэтому я не имел дело с обработкой ошибок.

 

Play with ES5 array methods:

var dataRows = [   [10, 11, 12, 13],   [20, 21, 22, 23],   [30, 31, 32, 33] ];  dataRows.reduce(function(a, b) {   return a.map(function(el, i) {     return el + b[i];   }); }); // [60, 63, 66, 69] 

This is attempt to give a clue, so I didn't deal with error handling thing.

</div
 
 
         
         

Связанный проблема

0  Как создать элемент DOM в другой шаблон?  ( How to create a dom element to another template ) 
У меня есть пример сценария. Короче говоря - если вы нажмете на «Добавить» создают ряд новых элементов, так как он был заполнен полями. Используемый ионный. Н...

1  Поток данных в реальном времени на веб-страницу  ( Stream realtime data to web page ) 
Я работаю над проектом, где мы хотим отслеживать данные на канале Comm и предоставить обратную связь на веб-страницу. Данные будут прочитаны процессом, работа...

2  Это хорошая идея до $ .post в Google Spreadsheet?  ( Is it a good idea to post to google spreadsheet ) 
Я пытаюсь разработать функцию в моей веб-странице, которая посылает данные как можно добраться до доступа к центральному репозиторию позже. Было бы здорово, е...

1  Невозможно заменить переменную в корпусе JSON в Postman  ( Unable to replace variable in json body in postman ) 
У меня есть ситуация, в которой A для петли должен работать в скрипте предварительного запроса и должен сохранить значение. Тот же набор значений следует испо...

13  Как перечислить все зарегистрированные события узла DOM с помощью JavaScript?  ( How to list all registered events of a dom node using javascript ) 
Я могу добавить или удалить обработчик событий для узла DOM. Можно ли выяснить все зарегистрированные обработчики событий данного узла DOM? Я имею в виду прям...

0  По какой-то причине мой нижний колонтитул не очень мобильный  ( For some reason my footer isnt very mobile friendly ) 
90% моего веб-сайта мобильнее (все равно размера), но по какой-то причине мой нижний колонтитул в основном полностью отрезан на мобильном телефоне. То, как ...

1  Изолированные Директива охвата с двусторонним связыванием не отражает изменения в объеме контроллера  ( Isolated scope directive with two way binding doesnt reflect changes in control ) 
<Сильное> Сводка: При попытке изменить переменную область (массив), которая была установлена ​​для двухстороннего привязки данных в пределах выделенной дир...

0  Asp.net внутри тега скрипта  ( Asp net inside a script tag ) 
Я пытаюсь получить некоторую работу с некоторыми JavaScript, который делает график в зависимости от предоставленной вами информации. Я говорю о Это <код...

3  OnleftClick & OnrightClick JavaScript Функции  ( Onleftclick onrightclick javascript functions ) 
В моем боковом коде сервера я динамически строим таблицу и именно сейчас я добавляю следующий код, чтобы обрабатывать Щелчок строки. <код> tr.Attributes.Add...

3  Как перенаправить, если JavaScript отключен в Masterpage asp.net mvc  ( How to redirect if javascript is disabled in asp net mvc masterpage ) 
У меня есть шестерня, на которую я хочу проверить, не отключил, что пользователь отключил свой JavaScript, затем перенаправляйтесь на простой <код> error.aspx...

0  Анимация холста, проблема с расчетами математики в моем коде JavaScript  ( Canvas animation issue with math calculations in my javascript code ) 
<Сильная> идея: Привет, это мой первый эксперимент с холстом анимацией. Я не уверен, что эта концепция уже существует, но я назвал мою версию «Двухугосудар...

-8  Как автоматически форматировать пользовательский ввод 4 цифры до последних 2 цифр  ( How to automatically format user input 4 digits to last 2 digits ) 
У меня есть текстовое поле срок действия к кредитным картам, который пользователь, способный ввести 4 цифры, но я хочу автоматически форматировать ввод пользо...

1  JavaScript Canvas Image OnClick не работает  ( Javascript canvas image onclick not working ) 
Я не в состоянии получить событие DOM Image OnClick для работы. <код> ImageView0 Почему я не получаю сообщение журнала, когда я нажимаю на изображение. В...

1  Расширение фона с помощью JavaScript  ( Extending a background using javascript ) 
У меня есть страница, которая выглядит так <код> ----------------------------------- | ************* | | ************* ...

1  Как я могу выбрать вторую кнопку Отмена, а не первым?  ( How can i select the second cancel button instead of the first ) 
Я хочу отменить второй элемент строки вместо первого. Ниже приведен какой-то пример код для 2 позиций: <код> <div class="screenlet-body"> <form na...

Связанный проблема

0  Как создать элемент DOM в другой шаблон? 
1  Поток данных в реальном времени на веб-страницу 
2  Это хорошая идея до $ .post в Google Spreadsheet? 
1  Невозможно заменить переменную в корпусе JSON в Postman 
13  Как перечислить все зарегистрированные события узла DOM с помощью JavaScript? 
0  По какой-то причине мой нижний колонтитул не очень мобильный 
1  Изолированные Директива охвата с двусторонним связыванием не отражает изменения в объеме контроллера 
0  Asp.net внутри тега скрипта 
3  OnleftClick & OnrightClick JavaScript Функции 
3  Как перенаправить, если JavaScript отключен в Masterpage asp.net mvc 
0  Анимация холста, проблема с расчетами математики в моем коде JavaScript 
-8  Как автоматически форматировать пользовательский ввод 4 цифры до последних 2 цифр 
1  JavaScript Canvas Image OnClick не работает 
1  Расширение фона с помощью JavaScript 
1  Как я могу выбрать вторую кнопку Отмена, а не первым?