Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод массива при условии (https://javascript.ru/forum/misc/67522-vyvod-massiva-pri-uslovii.html)

Роман Андреевич 22.02.2017 08:33

Вывод массива при условии
 
Всем, добрый день,
есть код:
var components = {
				water: 500,
				tea: 250,
				sugar: 15
			},
			recipes = {
				black: {
					water: 600,
					tea: 270,
					sugar: 15
				},
				gray: {
					water: 200,
					tea: 350,
					sugar: 5
				},
				green: {
					water: 350,
					tea: 50,
					sugar:20
				}
			}

		function check() {
			var ex = [];
			for (var key in recipes) {
				if (recipes[key].water > components.water) {
					ex.push('water');
				} else if (recipes[key].tea > components.tea) {
					ex.push('tea');
				} else if (recipes[key].sugar > components.sugar) {
					ex.push('sugar');
				}				
			}
			console.log(ex);
		}

		check();

Check() сравнивает рецепты и остатки по компонентам. Как сделать что бы выводились все разногласия а не первое попавшееся. Заранее благодарю

ynherb 22.02.2017 09:33

у тебя проблема в том что else if сработает только тогда когда if == false,
измени просто все на if

function check() {
            var ex = [];
            for (var key in recipes) {
                for(var i in recipes[key]) {
                if (recipes[key][i] > components[i]) ex.push(i);

          }
        }

  }

Роман Андреевич 22.02.2017 09:41

ynherb,
Спасибо, запутался. Все работает.)))))))))))))))))

Роман Андреевич 22.02.2017 10:22

Не совсем(((

Роман Андреевич 22.02.2017 10:24

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		var ex = [],
			nw = [],
			components = {
				water: {
					value: 500
				},
				tea: {
					value: 250
				},
				sugar: {
					value: 15
				}
			},
			recipes = {
				black: {
					water: 600,
					tea: 270,
					sugar: 30
				},
				gray: {
					water: 200,
					tea: 350,
					sugar: 5
				},
				green: {
					water: 350,
					tea: 50,
					sugar:20
				}
			}

		function check() {
			for (var key in recipes) {
				for (var i in recipes[key]) {
					if (recipes[key][i] > components[i]) ex.push(i);
				}
			}
		}
		check();
		console.log(ex);
		function finish(arr) {
			var obj = {};
			for (var i = 0; i < arr.length; i++) {
				var str = arr[i];
				obj[str] = true;
			}
			return Object.keys(obj);
		}
		nw = finish(ex);
		console.log(nw);
		console.log(typeof(nw));
	</script>
</body>
</html>

Роман Андреевич 22.02.2017 10:25

Вот теперь правильно написал. В components может добавляться неограниченное количество свойств.

Роман Андреевич 22.02.2017 10:37

Все. Ступил. Работает))))


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