Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив обьектов (https://javascript.ru/forum/misc/33122-massiv-obektov.html)

Kamilius 11.11.2012 12:01

Массив обьектов
 
Всем доброго времени суток. Облазил англо\русско язычный интернет в поисках нормального, доходчивого объяснения тому, как правильно создавать объект в массиве, но, к сожалению, ничего толкового - не нашел :( Далее покажу свои попытки выполнить задание по написанию теста в javascript, точнее ту его часть, где нужно создать массив объектов, а именно массив с вопросами\ответами.

Попытка первая:
var quiz = {
    question:"",
    answer:""
}
var questionList = [];

questionList[0] = new quiz();
questionList[0].question = "Чи є щось спільне між JavaScript і Java, окрім назви?";
questionList[0].answer = "ні";

questionList[1] = new quiz();
questionList[1].question = "Чи має значення реєстр літер при написанні назв змінних у JavaScript?";
questionList[1].answer = "так";

Результат - код не исполняется, + devtool в Chrome выдает: "Uncaught TypeError: object it not a function" на "questionList[0] = new quiz();".

Попытка вторая:
var quiz = {
    question:"",
    answer:""
}
var questionList = [];

quiz.question="Чи є щось спільне між JavaScript і Java, окрім назви?";
quiz.answer = "ні";
questionList.push(quiz);

quiz.question="Чи має значення реєстр літер при написанні назв змінних у JavaScript?";
quiz.answer = "так";
questionList.push(quiz);

Результат - код исполняется, НО все элементы массива в конце имеют значение последнего добавленного объекта. Как я понял, в массив передается не объект, а ссылка на него.

Был бы очень признателен за розяснение о том, как же правильно создавать объекты в массиве.

nerv_ 11.11.2012 12:44

var arr = [{
    prop: 'value'
}];

var arr = [];

arr.push({
    prop: 'value'
});

Цитата:

Сообщение от Kamilius
Облазил англо\русско язычный интернет в поисках нормального, доходчивого объяснения тому, как правильно создавать объект в массиве, но, к сожалению, ничего толкового - не нашел

только в это я все равно не верю

ruslan_mart 11.11.2012 12:46

var questionList = new Array();

//Вопрос 1
questionList[0][0] = 'Чи є щось спільне між JavaScript і Java, окрім назви?';
questionList[0][1] = 'hi';

//Вопрос 2
questionList[1][0] = 'Чи має значення реєстр літер при написанні назв змінних у JavaScript?';
questionList[1][1] = 'так';

function question(a){
alert('Вопрос: '+questionList[a][0]);
alert('Ответ: '+questionList[a][1]);
}


<input type="button" value="Вопрос 1" onclick="question(0)">
<input type="button" value="Вопрос 2" onclick="question(1)">

Kamilius 11.11.2012 12:58

Цитата:

Сообщение от nerv_ (Сообщение 215404)
var arr = [{
    prop: 'value'
}];

var arr = [];

arr.push({
    prop: 'value'
});


только в это я все равно не верю

Это правда, просто я не так давно знаком с программированием, и вполне возможно, что не совсем правильно формировал "запрос"
Спасибо за помощь, к стати :)

JsLoveR 12.11.2012 09:50

Нормально, по - человечески ;) :
var massQuestions=[
	{
    	question : "Чи є щось спільне між JavaScript і Java, окрім назви?",
    	rightAnswer : "ні"
	},
	
	{
   		question : "Чи має значення реєстр літер при написанні назв змінних у JavaScript?",
    	rightAnswer : "так"
	}
];
for(var i in massQuestions ) alert("Запитання: "+massQuestions[i].question+"\nВідповідь: "+ massQuestions[i].rightAnswer);


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