Логика работы с массивами 
		
		
		
		Доброго времени суток, посоветуйте пожалуйста что-нибудь по поводу следующей задачи. 
	Есть массив с материалами: var MATERIALS = ['Красный кирпич', 'Белый кирпич', 'Ракушняк', 'Шлакоблок'] Каждый материал имеет составляющие, допустим: [Красный кирпич] состоит из [Глина] 10 [Цемент] 5 [Вода] 8 [Белый кирпич] состоит из [Песок] 5 [Цемент] 4 [Вода] 3 и так далее Задача стоит такая: есть многострочное меню с выбором из массива MATERIALS. Допустим, выбираем 'Красный кирпич' 2шт, 'Белый кирпич' 1шт. Мне нужно получить все входящие в этот выбор составляющие с общим количеством. Т.е чтобы после такого выбора получилось: Глина 20; Цемент 14; Вода 19; Каким образом нужно построить конструкцию? Если можно, с небольшим примером.  | 
	
		
 
<html>
<head></head>
<body>
<script>
window.onload = function () {
var materials = {
   "Красный кирпич": ["Глина 10", "Цемент 5", "Вода 8"],
   "Белый кирпич": ["Песок 5","Цемент 4","Вода 3"]
}
Object.keys(materials).forEach(function (material) {
   var button = document.createElement('button');
   button.innerHTML = material;
   button.addEventListener('click', function () {
      alert(materials[material]);
      return false;
   }, false);
   document.body.appendChild(button);
});
};
</script>
</body>
</html>
 | 
	
		
 tsigel, 
	а как быть с количественным составляющим?  | 
	
		
 фонарик, 
	Ну добавьте циферки к состовляющим. Вообще эту ципочку можно делать и глубже, все что тут надо - это итерировать объект и массив. Отличить объект от массива можно с помощью Array.isArray(some)  | 
	
		
 Чтобы добавить циферки, их надо где-то обозначить, это константа, прилепленная к определенному предмету. Эта часть задачи вызывает наибольшую трудность :( 
	 | 
	
		
 фонарик, 
	Поправил код, так?  | 
	
		
 фонарик, 
	
var materials = {
   "Красный кирпич": {"Глина" : 10, "Цемент" : 5, "Вода" : 8},
   "Белый кирпич": {"Песок" : 5, "Цемент" : 4,"Вода" : 3}
},
total  = {
   "Красный кирпич": 2,
   "Белый кирпич" : 1
}, obj = {};
Object.keys(total).forEach(function (item) {
    var num = total[item];
    Object.keys(materials[item]).forEach(function (component) {
    var sum = materials[item][component] * num
    obj[component] ?  (obj[component] += sum) : (obj[component] = sum)
});
});
alert(JSON.stringify(obj))
 | 
	
		
 рони, 
	Блин, теперь понял что надо было :(  | 
	
		
 Цитата: 
	
 <div name='block_01' style="border:1px solid gray; width:250px; height:100px; position:absolute"> <select name=""> <option value=0></option> <option value=1>Красный кирпич</option> <option value=2>Белый кирпич</option> <option value=3>Ракушняк</option> <option value=4>Шлакоблок</option> </select> <input style="width:50px" name="" type="text" /> <select name=""> <option value=0></option> <option value=1>Красный кирпич</option> <option value=2>Белый кирпич</option> <option value=3>Ракушняк</option> <option value=4>Шлакоблок</option> </select> <input style="width:50px" name="" type="text" /> <button>Посчитать</button> </div> <div name='block_02' style="border:1px solid green; width:250px; height:100px; left:300px; position:absolute">Сюда поместить связку товар + количество</div> <script> var MATERIALS = ['Красный кирпич', 'Белый кирпич', 'Ракушняк', 'Шлакоблок'] </script>  | 
	
		
 Ой, рони уже сделал, пойду переваривать :) 
	 | 
| Часовой пояс GMT +3, время: 04:16. |