@missbells

Как преобразовать строку в объект в JS?

Есть код:

var book1 = {};
book1.title = "My Book";
book1.pubYear = 1986;
book1.price = "50 UAH"

var book2 = {};
book2.title = "My Book 2";
book2.pubYear = 2012;
book2.price = "170 UAH"

for(var i=1; i<3; i++) {
	var y = "book"+i;	
	console.log(y.title);	
}


Хочу сделать с помощью цикла for так, чтоб в консоле подряд выводились тайтлы двух книг, например:
My Book
My Book 2

Но вместо этого выводится undefined. Понимаю, что проблема в том, что в переменную y поступает строка, а не объект. Подскажите, пожалуйста, как решить проблему.
  • Вопрос задан
  • 5174 просмотра
Решения вопроса 2
EreminD
@EreminD
Кое-что умею
В данном случае, y - просто строка

Самый лучший вариант - book1 и book2 положить в массив и с ним уже работать

var books = [];

var book1 = {};
book1.title = "My Book";
book1.pubYear = 1986;
book1.price = "50 UAH"

var book2 = {};
book2.title = "My Book 2";
book2.pubYear = 2012;
book2.price = "170 UAH"

books.push(book1);
books.push(book2);
//или for или books.forEach
for(var i=0; i<books.length; i++) {
  var y = books[i];	
  console.log(y.title);	
}
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
var books=[
   {
     title : "My Book",
     pubYear : 1986,
     price : "50 UAH"
   },
   {
     title : "My Book 2",
     pubYear : 2012,
     price : "170 UAH"
   },
     {
     title : "My Book 3",
     pubYear : 2012,
     price : "170 UAH"
   }
];

for(var i=0; i<3; i++) {
  var y = books[i];	
  console.log(y.title);	
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Если вам очень-очень хочется сделать именно так, то вот: var y = this["book" + i];
Но лучше сделайте так, как предложил Дмитрий Еремин.
Ответ написан
for(var i=1; i<3; i++) {
  console.log(eval("book"+i +'.title'));	
}
Ответ написан
Ваш ответ на вопрос

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

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