 
			
				28.08.2013, 19:10
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.11.2012 
					
					
					
						Сообщений: 55
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Количесвто повторений
			 
			
		
		
		
		Здравствуйте. Такой вопрос - есть список товаров 
Пицца "Пицца" - 500.00 р
Пицца "Пицца" - 500.00 р
Пицца "Пицца" - 500.00 р
Пиво "Пиво" - 100.00 р
Пиво "Пиво" - 100.00 р
Цветок "Цветок"  - 200.00 р
 
Мне нужно получить количество одинаковых товаров и их сумму, т.е.
 
Пицца "Пицца" 3 шт.  1500.00 р
Пиво "Пиво" 2 шт. 200.00 р
Цветок "Цветок"  1 шт. 200.00 р
 
Заранее спасибо!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.08.2013, 20:48
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от valyan
			 
		
	 | 
 
	
		есть список товаров 
Пицца "Пицца" - 500.00 р
Пицца "Пицца" - 500.00 р
Пицца "Пицца" - 500.00 р
Пиво "Пиво" - 100.00 р
Пиво "Пиво" - 100.00 р
Цветок "Цветок"  - 200.00 р
  
Мне нужно получить количество одинаковых товаров и их сумму
	 | 
 
	
 
 И что у тебя не получается? 
 
Если этот список у тебя просто "на бумаге" JS не сможет с этим работать...    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
	
		
	
		
		
		
			
			 
			
				28.08.2013, 20:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.11.2012 
					
					
					
						Сообщений: 55
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Пытаюсь сделать так 
var arr = new Array();
var arr = [['Gbwwf',2], ['Gbwwf',2], ['Gbwwf',2], ['Gbdj',2], ['Gbdj',2]];
document.write(arr + '<br />');
var f = 0;
var arr2 = new Array(
 [, ]
 );
 
for (var i=0; i<arr.length; i++) {
    for (var j=0; j<arr.length; j++) {
        if (arr[i, 0] == arr[j, 0]) {
            if(arr2[arr[i, 0], 0]) {
                arr2[arr[i, 0], 0] += 1;
            } else {
                arr2[arr[i, 0], 0] = 1;
            }
            arr.splice(j, 1)
            j--;
        }
    }
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.08.2013, 21:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от valyan
			
		
	 | 
 
	| 
		Пытаюсь сделать так
	 | 
 
	
 
 Не делай так...    
Объект тебе в помощь...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2013, 17:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Любитель 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.12.2009 
					
					
					
						Сообщений: 422
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var data = [
	['Пицца "Пицца"', 500.00],
	['Пицца "Пицца"', 500.00],
	['Пицца "Пицца"', 500.00],
	['Пиво "Пиво"', 100.00],
	['Пиво "Пиво"', 100.00],
	['Цветок "Цветок"', 200.00]
];
var total = { }, i = data.length;
while(i-- > 0) {
	if(data[i][0] in total) {
		total[data[i][0]] += data[i][1];
    }else {
		total[data[i][0]] = data[i][1];
	}		
}
console.log(total);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2013, 19:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 SELECT, SUM, COUNT в помощь 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2013, 23:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.11.2012 
					
					
					
						Сообщений: 55
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от JsLoveR
			 
		
	 | 
 
	
		
var data = [
	['Пицца "Пицца"', 500.00],
	['Пицца "Пицца"', 500.00],
	['Пицца "Пицца"', 500.00],
	['Пиво "Пиво"', 100.00],
	['Пиво "Пиво"', 100.00],
	['Цветок "Цветок"', 200.00]
];
var total = { }, i = data.length;
while(i-- > 0) {
	if(data[i][0] in total) {
		total[data[i][0]] += data[i][1];
    }else {
		total[data[i][0]] = data[i][1];
	}		
}
console.log(total);
	 | 
 
	
 
 Спасибо за подсказку. Вобще условия задачи немного другие, но смысл один - с сервера аякс-запросом в цикле вытягиваю JSON-объект, потом его парсю (var Myorder = JSON.parse(order); ) и вот из распарсенного объетка мне нужно вытянуть "имя", "количество" и "сумму"  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2013, 23:29
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.06.2011 
					
					
					
						Сообщений: 1,165
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<div id="result"></div>
 
var data = [
	['Пицца "Пицца"', 500.00],
	['Пиво "Пиво"', 100.00],
	['Пицца "Пицца"', 500.00],
	['Цветок "Цветок"', 200.00],
	['Пицца "Пицца"', 500.00],
	['Пиво "Пиво"', 100.00]
];
data.sort();
for (var i = 0; i < data.length; i++) {
	data[i][2] = 1;
}
for (var i = 0; i < data.length - 1; i++) {
	if (data[i][0] == data[i + 1][0]) {
        data[i][2]++;
		data.splice(i + 1, 1);
        i--;
	}
}
//в итоге получили массив data[[имя, стоимость, количество],[имя, стоимость, количество],[имя, стоимость, количество]]
//выводим
var str = '';
for (var i = 0; i < data.length; i++) {
    str += '<li>' + data[i][0] + ': ' + data[i][2] + ' шт. x ' + data[i][1] + ' = ' + data[i][1] * data[i][2] + ' руб.</li>';
}
document.getElementById('result').innerHTML = '<ul>' + str + '</ul>';
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось BETEPAH, 30.08.2013 в 09:15.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |