2016-11-10 3 views
0

Я новичок в js и имею тележку в веб-магазине, который я делаю для назначения Javascript, и я не могу заставить свою общую цену работать, которая отображается на веб-странице, когда пользователь нажимает на элементы, которые нужно добавить в корзину. Вот мой массив элементов, любая помощь будет признателен, спасибоJavascript, как я могу рассчитать общую цену в массиве элементов?

var cart; 
var items = new Array(); //create array to store items 
items[0] = "Greatest Hits CD", 10; 
items[1] = "Girls CD", 10; 
items[2] = "Shirt1", 20; 
items[3] = "Mask Tee", 20; 
items[4] = "Crewneck", 25; 
items[5] = "Tour Poster", 9; 

и вот моя функция

this.display = function() { 
this.holder.innerHTML = ""; 
this.totalprice = 0; 
for (var i=0; i<this.quantities.length; i++) { 
if (this.quantities[i] > 0) { 
this.totalprice += this.quantities[i]*this.items[i]; 
var elm = document.createElement('div'); 
elm.innerHTML = "<span class='name'>"+this.items[i]+" \</span><span class='quantity'>Quantity: "+this.quantities[i]+"</span>"; 
this.holder.insertBefore(elm, null); 
    } 
} 
var elm = document.createElement('div'); 
elm.innerHTML = "<span class='price'>Total Price: $"+this.totalprice+" </span>"; 
this.holder.insertBefore(elm, null); 
document.getElementById('quantities').value = cart.quantities; 
document.getElementById('items').value = cart.items; 
    } 
+3

вы не то, что Ассинг, что вы ожидаете с 'пунктов [0] = «Greatest Hits CD», 10; «лучше использовать» элементы [0] = [«Greatest Hits CD», 10]; ', массив, а не только онемение er, в результате работы с запятой. –

ответ

1

Вы пытаетесь создать ассоциативный массив дисплей (пар ключ/значение) , а не как стандартные массивы работают в JavaScript.

Вместо этого создайте массив объектов, которые хранят данные. Каждая «запись» будет сохраняться как объект, и каждый из этих объектов получит общий набор имен свойств (prop1 и prop2 в моем примере). Затем вы можете перебирать массив объектов и на каждой итерации захватывать интересующее вас свойство (prop2).

var items = new Array(); //create array to store items 
 

 
// Each item in the array will store an object with 2 properties 
 
// Object literal syntax: {propertyName : propertyValue, propertyName : propertyValue, etc.} 
 
items[0] = {prop1:"Greatest Hits CD", prop2:10}; 
 
items[1] = {prop1:"Girls CD", prop2:10}; 
 
items[2] = {prop1:"Shirt1", prop2:20}; 
 
items[3] = {prop1:"Mask Tee", prop2:20}; 
 
items[4] = {prop1:"Crewneck", prop2:25}; 
 
items[5] = {prop1:"Tour Poster", prop2:9}; 
 

 
var sum = null; // Place to store the total cost 
 
    
 
// The JavaScript Array.prototype specifies a built-in method called 
 
// forEach that takes a function as an argument. That function is 
 
// automatically passed 3 arguments and is executed for each element 
 
// in the array. 
 
items.forEach(function(value, index, arry){ 
 
sum += value.prop2; 
 
}); 
 

 
console.log(sum);

1

Array Reduce метод был создан специально для этого:

var items = [ 
 
    ["Greatest Hits CD", 10], 
 
    ["Girls CD", 10], 
 
    ["Shirt1", 20], 
 
    ["Mask Tee", 20], 
 
    ["Crewneck", 25], 
 
    ["Tour Poster", 9] 
 
]; 
 

 
console.log(
 
    items.reduce((a,b) => b[1] + (a[1] ? a[1] : a)) 
 
);

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