Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сложить числа написанные через запятую (https://javascript.ru/forum/misc/54564-slozhit-chisla-napisannye-cherez-zapyatuyu.html)

xXapokalypsesXx 23.03.2015 04:02

Сложить числа написанные через запятую
 
Здравствуйте!
С помощью данного кода:
var json = localStorage.getItem('save');
var data = JSON.parse(json);
var one = data.data;
$('.get').text(one);

Получаю строку:
0,5,5,5,5,4,5,5,5,4,5,4,5,4,4,4,4,4,5,4,5,5,5,4,4,4,4,5,4,4,4,4,5,5,4,4,3,4,4,5,3,4,4,4,4,5


Как можно сложить все эти числа?
Буду благодарен за помощь.

laimas 23.03.2015 04:12

А почему строку? Ведь если это был массив, который записали как JSON в локальное хранилище, то JSON.parse(json) возвращает не строку, а массив. Обходите теперь этот массив циклом и суммируйте значения его элементов.

ruslan_mart 23.03.2015 07:06

var one = [0,5,5,5,5,4,5,5,5,4,5,4,5,4,4,4,4,4,5,4,5,5,5,4,4,4,4,5,4,4,4,4,5,5,4,4,3,4,4,5,3,4,4,4,4,5];

var n = eval(one.join('+'));
alert(n);

skrudjmakdak 23.03.2015 08:24

через eval?

рони 23.03.2015 09:01

xXapokalypsesXx,
:)
var one = "0,5,5,5,5,4,5,5,5,4,5,4,5,4,4,4,4,4,5,4,5,5,5,4,4,4,4,5,4,4,4,4,5,5,4,4,3,4,4,5,3,4,4,4,4,5",
    sum = one.split(",").reduce(function(a,b) {return a + +b},0);
    alert(sum)

ruslan_mart 23.03.2015 11:25

skrudjmakdak, а почему бы и нет? Это же клиент, а не сервер. И все данные берутся из localStorage, а не $_GET.

Aetae 23.03.2015 14:30

Ruslan_xDD, а как данные в энтот localStorage попадают автор же не написал. Да и выглядит откровенно отвратительно, имхо.

xXapokalypsesXx 23.03.2015 22:04

Ruslan_xDD, спасибо, работает отлично, но многие рекомендуют воздержаться от использования eval.

рони, и вам спасибо, ваш пример работает, но вот так почему-то не сработало:
var json = localStorage.getItem('save');
var data = JSON.parse(json);
var one = data.data,
    sum = one.split(',').reduce(function(a,b) {return a + +b},0);
    $('.get').text(sum);


Сделал так, теперь работает:
var json = localStorage.getItem('save');
var data = JSON.parse(json);
var one = data.data;
var two = one.join('+');
var sum = two.split('+').reduce(function(a, b) {
    return a + +b
}, 0);
$('.get').text(sum);

рони 23.03.2015 22:12

Цитата:

Сообщение от xXapokalypsesXx
Сделал так,

тогда у вас лишнее
var json = localStorage.getItem('save');
var data = JSON.parse(json);
var one = data.data;
var sum = one.reduce(function(a, b) {
    return a + +b
}, 0);
$('.get').text(sum);

xXapokalypsesXx 23.03.2015 22:40

рони, благодарю)


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