2016-10-17 3 views
0

Я пытаюсь суммировать цены на товары в массиве с помощью специального JS GTM. Элементы массива являются переменными. Моя переменная источника данных выглядит так:Суммировать строковые значения в массиве

dl_products_checkout = [ { name: 'Sports Gel SPF 20', id: '1125200001', price: '23.9', brand: 'ultrasun', quantity: 1 }, { name: 'Almost Powder Makeup SPF 15 9 g Neutral', id: '1081040004', price: '25.9', brand: 'Clinique', quantity: 1 } ] 

К сожалению, я получаю NaN в качестве возврата. Вот мое решение:

function() { 
    var items = {{dl_products_checkout}}; 
    var ids = []; 
    var totalValue = 0; 
    var i, len; 
    for (i = 0, len = items.length; i < len; i++) { 
    totalValue += parseInt(items[i].price); 
    } 
    return ids.push(totalValue); 
} 

Было бы здорово, если бы кто-нибудь мог сказать мне, что я здесь делаю неправильно. Большое спасибо!

С наилучшими пожеланиями, Антон

+0

Вы уверены, что хотите добавить целые числа? и возвращает только длину массива, а не сам массив? но я не получаю 'NaN', если' {{...}} 'правильно. –

+0

Похоже, вы возвращаете массив, а не числовое значение, которое объясняет результат NaN ... –

+1

, если вы выполните 'parseInt ('23 .9 ')' вы получите '23' вместо' 23.9'. Вам нужен 'parseFloat'. –

ответ

1

С одной стороны, я думаю, что вы вернуть неверное значение ...

Попробуйте это:

/*** 
    We create a function, we might want to use it more then once. 
***/ 
function CalculateTotal(items) { 
    // First we check if we have something to work with. 
    if (items.length < 1 || items === undefined) { 
     return null; 

    } else { // We can do stuff 
     var total_value = 0; // we need something to store the total value in. 

     for (var i = 0; i < items.length; i ++) { // Let's go through the list. 
      total_value += items[i].price; // add the price to total 
      console.log("total_value = " + total_value); // check total value 
      console.log(items[i].name + " = " + items[i].price); // check item price 
     } 
     // now we are all done 
     return total_value; 
    } 

И использовать как:

var total = CalculateTotal(dl_products_checkout); 
0

Спасибо всем за ваш быстрый ответ! Я только что вычислил решение, которое работает для меня:

function() { 
    var items = {{dl_products_checkout}}; 
    var itemsValue = []; 
    var sumValue = 0; 
    var i, len; 
    for (i = 0, len = items.length; i < len; i++) { 
    itemsValue.push(items[i].price); 
     for (i = 0; i < itemsValue.length; i++){ 
      sumValue = sumValue + parseFloat(itemsValue[i]) 
     } 
    } 
    return sumValue; 
} 

Удачного дня!

+0

Возможно, вы захотите отдать должное полезным комментариям ... – Flummox

+0

Привет, Flummox, так как я совершенно новый в stackoverflow, я не очень хорошо разбираюсь в процессах здесь. Не могли бы вы рассказать мне, как я могу тратить кредиты? Thanks – Toni2708

+0

Welkome! «кредиты» здесь - это приоритеты. Я очень рекомендую продвигать то, что помогает, даже если только на полпути: они не стоят вам ни копейки, и давайте узнаем, что вы узнали, что вы оцениваете их работу/работу. Под вашим именем вы видите свою репутацию, которая достигается за счет повышений или уменьшена вниз. Это в сочетании с значками дает вам идею (но не полностью) о пользователе и их возможностях. – Flummox

Смежные вопросы