@Besso17

Как вывести объект?

У меня есть объект мотоцикл, в нем 7 мотоциклов и у каждого свои хар-ки.
var moto = {
	motorcycle1: {
		color: "Черный",
		model: "Suzuki",
		MaxSpeed: 120
	},
	motorcycle2: {
		color: "Красный",
		model: "Honda",
		MaxSpeed: 125
	},
	motorcycle3: {
		color: "Белый",
		model: "BMW",
		MaxSpeed: 105
	},
	motorcycle4: {
		color: "Красный",
		model: "Ducati",
		MaxSpeed: 130
	},
	motorcycle5: {
		color: "Белый",
		model: "Kawasaki",
		MaxSpeed: 150
	},
	motorcycle6: {
		color: "Зеленый",
		model: "Урал",
		MaxSpeed: 90
	},
	motorcycle7: {
		color: "Черный",
		model: "Yamaha",
		MaxSpeed: 160
	}
};


Мне надо запросить цвет и скорость мотоцикла и вывести те мотоциклы, в которых совпадают условия, а именно цвет и скорость большей или равной, которую я ввёл.

Я сделал вот так, все работает, но мне не нравится такой подход. А как еще осуществить, додуматься не могу. Как можно сделать лучше?
var colorMoto = prompt("Введите цвет мотоцикла");
var speed = +prompt("Введите максимальную скорость");
for (var key1 in moto)
   for (var key2 in moto [key1]){
   		
	 if ((moto [key1][key2]) == 160 && colorMoto == "Черный" && speed <= 160 ){
     	document.write (key1 + "<br>");
 		} 
 	else if ((moto [key1][key2]) == 120 && colorMoto == "Черный" && speed <= 120 ){
     	document.write (key1 + "<br>");
 		} 
 	else if ((moto [key1][key2]) == 90 && colorMoto == "Зеленый" && speed <= 90){
 		document.write (key1 + "<br>");
 		}
 	else if ((moto [key1][key2]) == 125 && colorMoto == "Красный" && speed <= 125){
 		document.write (key1 + "<br>");
 		}
 	else if ((moto [key1][key2]) == 130 && colorMoto == "Красный" && speed <= 130){
 		document.write (key1 + "<br>");
 		}
 	else if ((moto [key1][key2]) == 150 && colorMoto == "Белый" && speed <= 150){
 		document.write (key1 + "<br>");
 		}
 	else if ((moto [key1][key2]) == 105 && colorMoto == "Белый" && speed <= 105){
 		document.write (key1 + "<br>");
 		}
  	}
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
@lemme
Frontend
Object
  .values(moto)
  .filter(item => item.color === 'Красный' && item.MaxSpeed >= 50)
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Вы не хотите попробовать сделать это в массиве?
Ответ написан
Комментировать
v1996v04v04
@v1996v04v04
Самый простой вариант( если я правильно понял что вы хотите), объекты конечно же предпочтительно хранить в массиве. https://jsfiddle.net/qrrvnbcy/6/
Ответ написан
Комментировать
twobomb
@twobomb
Вот пример
Ответ написан
Комментировать
@Besso17 Автор вопроса
Сделал всё-таки. Как и хотел.
var moto = {
	motorcycle1: {
		color: "Черный",
		model: "Suzuki",
		MaxSpeed: 120
	},
	motorcycle2: {
		color: "Красный",
		model: "Honda",
		MaxSpeed: 125
	},
	motorcycle3: {
		color: "Белый",
		model: "BMW",
		MaxSpeed: 105
	},
	motorcycle4: {
		color: "Красный",
		model: "Ducati",
		MaxSpeed: 130
	},
	motorcycle5: {
		color: "Белый",
		model: "Kawasaki",
		MaxSpeed: 150
	},
	motorcycle6: {
		color: "Зеленый",
		model: "Урал",
		MaxSpeed: 90
	},
	motorcycle7: {
		color: "Черный",
		model: "Yamaha",
		MaxSpeed: 160
	}
};

var color = prompt("Введите цвет мотоцикла");
var speed = +prompt("Введите максимальную скорость");


for (var key1 in moto)
	for(var key2 in moto [key1]){
		if(moto[key1].color == color && moto[key1].MaxSpeed >= speed){
			var a = key1;
			alert(a);
			break;
		}
	};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы