简体   繁体   English

我的基本问题是如何访问对象列表中单个 object 的属性或方法?

[英]My basic question is how do I access the properties or methods of an individual object in a list of objects?

I am creating an interactive Maths quiz with 9 triangles generated as objects.我正在创建一个交互式数学测验,其中有 9 个三角形作为对象生成。 The user selects a triangle from a drop-down list and its image and dimensions appear and a variable (thisOne) is set as the number of the triangle (1 to 9).用户从下拉列表中选择一个三角形,它的图像和尺寸出现,变量(thisOne)被设置为三角形的编号(1 到 9)。

The user inputs their answer (the area of the triangle).用户输入他们的答案(三角形的面积)。

I would have thought that I could generate the correct answer with something like this我原以为我可以用这样的东西生成正确的答案

correctAnswer = ("triangle_"+ thisOne).triArea()正确答案 = ("triangle_"+ thisOne).triArea()

but it doesn't work.但它不起作用。

My basic question is how do I access the properties or methods of an individual object in a list of objects?我的基本问题是如何访问对象列表中单个 object 的属性或方法?

Any help appreciated任何帮助表示赞赏

<!--   ---------------- Triangle object ----------------- -->
function Triangle(triSrc, triName, triBase, triHeight, triUnits){
    this.triSrc = triSrc;
    this.triName = triName;
    this.triBase = triBase; 
    this.triHeight = triHeight;
    this.triArea = function(){
        return triBase * triHeight /2
       };
    this.triUnits = triUnits;
}

var triangle_1 = new Triangle('tri_q_area_1','right angle triangle',34,20,'m2');
var triangle_2 = new Triangle('img/tri_q_area_2.png','right angle triangle',16,16,'cm2');
var triangle_3 = new Triangle('img/tri_q_area_3.png','right angle triangle',15,8,'km2');
var triangle_4 = new Triangle('img/tri_q_area_4.png','right angle triangle',15,9,'cm2');
var triangle_5 = new Triangle('img/tri_q_area_5.png','scalene', 20,12,'cm2');
var triangle_6 = new Triangle('img/tri_q_area_6.png','scalene', 200,130,'cm2');
var triangle_7 = new Triangle('img/tri_q_area_7.png','scalene', 20,16,'m2');
var triangle_8 = new Triangle('img/tri_q_area_8.png','scalene', 28,16,'km2');
var triangle_9 = new Triangle('img/tri_q_area_9.png','scalene', 54,38,'yards2');

are you ok with have a list?你可以列个清单吗?

<!--   ---------------- Triangle object ----------------- -->
function Triangle(triSrc, triName, triBase, triHeight, triUnits){
    this.triSrc = triSrc;
    this.triName = triName;
    this.triBase = triBase; 
    this.triHeight = triHeight;
    this.triArea = function(){
        return triBase * triHeight /2
    };
    this.triUnits = triUnits;
}

var triangles [
    new Triangle('tri_q_area_1','right angle triangle',34,20,'m2'),
    new Triangle('img/tri_q_area_2.png','right angle triangle',16,16,'cm2'),
    new Triangle('img/tri_q_area_3.png','right angle triangle',15,8,'km2'),
    new Triangle('img/tri_q_area_4.png','right angle triangle',15,9,'cm2'),
    new Triangle('img/tri_q_area_5.png','scalene', 20,12,'cm2'),
    new Triangle('img/tri_q_area_6.png','scalene', 200,130,'cm2'),
    new Triangle('img/tri_q_area_7.png','scalene', 20,16,'m2'),
    new Triangle('img/tri_q_area_8.png','scalene', 28,16,'km2'),
    new Triangle('img/tri_q_area_9.png','scalene', 54,38,'yards2')
];

and then do triangles[thisOne].triArea()然后做triangles[thisOne].triArea()

You should use an array for this sort of thing.你应该为这种事情使用一个数组。 Here's an example:这是一个例子:

<!--   ---------------- Triangle object ----------------- -->
function Triangle(triSrc, triName, triBase, triHeight, triUnits){
    this.triSrc = triSrc;
    this.triName = triName;
    this.triBase = triBase; 
    this.triHeight = triHeight;
    this.triArea = function(){
        return triBase * triHeight /2
       };
    this.triUnits = triUnits;
}
var triangle = []; // declare the array;
// note that i'm skipping index 0 to keep with your sample, that is not normally a smart thing to do!
// assign to indices of the array, no need to declare individual elements.
triangle[1] = new Triangle('tri_q_area_1','right angle triangle',34,20,'m2');
triangle[2] = new Triangle('img/tri_q_area_2.png','right angle triangle',16,16,'cm2');
triangle[3] = new Triangle('img/tri_q_area_3.png','right angle triangle',15,8,'km2');
triangle[4] = new Triangle('img/tri_q_area_4.png','right angle triangle',15,9,'cm2');
triangle[5] = new Triangle('img/tri_q_area_5.png','scalene', 20,12,'cm2');
triangle[6] = new Triangle('img/tri_q_area_6.png','scalene', 200,130,'cm2');
triangle[7] = new Triangle('img/tri_q_area_7.png','scalene', 20,16,'m2');
triangle[8] = new Triangle('img/tri_q_area_8.png','scalene', 28,16,'km2');
triangle[9] = new Triangle('img/tri_q_area_9.png','scalene', 54,38,'yards2');

// now you only need the index to address a specific element:
var correctIndex = 4;
var correctAnswer = triangle[correctIndex];

// visualize it in the console
console.log(correctAnswer);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM