Вывод массива при условии
Всем, добрый день,
есть код: 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, время: 16:10. |