繁体   English   中英

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

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

我正在创建一个交互式数学测验,其中有 9 个三角形作为对象生成。 用户从下拉列表中选择一个三角形,它的图像和尺寸出现,变量(thisOne)被设置为三角形的编号(1 到 9)。

用户输入他们的答案(三角形的面积)。

我原以为我可以用这样的东西生成正确的答案

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

但它不起作用。

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

任何帮助表示赞赏

<!--   ---------------- 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');

你可以列个清单吗?

<!--   ---------------- 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')
];

然后做triangles[thisOne].triArea()

你应该为这种事情使用一个数组。 这是一个例子:

<!--   ---------------- 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