Вывод массива при условии
Всем, добрый день,
есть код:
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() сравнивает рецепты и остатки по компонентам. Как сделать что бы выводились все разногласия а не первое попавшееся. Заранее благодарю |
у тебя проблема в том что 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);
}
}
}
|
ynherb,
Спасибо, запутался. Все работает.))))))))))))))))) |
Не совсем(((
|
<!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>
|
Вот теперь правильно написал. В components может добавляться неограниченное количество свойств.
|
Все. Ступил. Работает))))
|
| Часовой пояс GMT +3, время: 10:25. |