Javascript 不能访问数组中的对象,只能访问对象本身
我有以下代码,在循环中创建对象,然后访问它们的值。现在我来讨论这个问题,访问对象本身是可以的,但不访问包含对象的数组。我是不是遗漏了什么Javascript 不能访问数组中的对象,只能访问对象本身,javascript,arrays,node.js,object,for-loop,Javascript,Arrays,Node.js,Object,For Loop,我有以下代码,在循环中创建对象,然后访问它们的值。现在我来讨论这个问题,访问对象本身是可以的,但不访问包含对象的数组。我是不是遗漏了什么 camList = new Array(); for (var i=0; i<8; i++) { var camObj = new Camera(i); camList.push(camObj); console.log(camObj.id); //this works console.log(camList[i
camList = new Array();
for (var i=0; i<8; i++)
{
var camObj = new Camera(i);
camList.push(camObj);
console.log(camObj.id); //this works
console.log(camList[i].id); //this doesnt
}
主要代码:
var cv = require("opencv-node");
var Camera = require("./cameraModule").Camera;
var camList = new Array();
for (var i=0; i<8; i++)
{
var capture = new cv.VideoCapture();
capture.open(i);
if (capture.isOpened())
{
var camObj = new Camera(i, capture);
camList.push(camObj);
console.log(camList[i].id); //Here is the problem
}
}
var-cv=require(“opencv节点”);
var摄像机=需要(“./cameraModule”)。摄像机;
var camList=新数组();
对于(var i=0;i请确保camList
在循环开始之前为空数组:
var camList = [];
for (var i = 0; i < 8; i++) {
var camObj = new Camera(i);
camList.push(camObj);
console.log(camObj.id);
console.log(camList[i].id);
}
var-camList=[];
对于(变量i=0;i<8;i++){
var camObj=新摄像机(i);
camList.push(camObj);
控制台日志(camObj.id);
console.log(camList[i].id);
}
在循环开始之前,确保camList
为空数组:
var camList = [];
for (var i = 0; i < 8; i++) {
var camObj = new Camera(i);
camList.push(camObj);
console.log(camObj.id);
console.log(camList[i].id);
}
var-camList=[];
对于(变量i=0;i<8;i++){
var camObj=新摄像机(i);
camList.push(camObj);
控制台日志(camObj.id);
console.log(camList[i].id);
}
在每个循环迭代中,您都在检查捕获.isOpened()
。如果这是false
,会发生什么
循环将继续,而不会将某些内容推入camList
。在下一个循环中,i
将递增。比方说capture.isOpened()
将变为true
。当插入数组时,i
将不会与刚才添加的元素对齐。i
将是一个(或多个)索引太大了
请尝试执行以下操作,而不是执行camList[i].id
:
camList[camList.length - 1].id
在每个循环迭代中,您都在检查capture.isOpened()
。如果这是false
,会发生什么
循环将继续,而不会将某些内容推入camList
。在下一个循环中,i
将递增。比方说capture.isOpened()
将变为true
。当插入数组时,i
将不会与刚才添加的元素对齐。i
将是一个(或多个)索引太大了
请尝试执行以下操作,而不是执行camList[i].id
:
camList[camList.length - 1].id
它是如何工作的?发生了什么?你在哪里定义了camList
?你确定你的i
与其索引对齐吗?如果你console.log(camList),你会看到什么是的,我们需要查看创建var-camList
的早期代码。如果您之前按下它,索引将已经超过当前基于零的i
值。如果您希望索引对齐,可能您的意思是camList[i]=camObj;
@Fidel90:这里有一个提示,如果capture.isOpened()
是否为false
?与camList
中有多少项相关的i
在哪里?它是如何工作的?发生了什么?你在哪里定义camList
?你确定你的i
与其索引对齐吗?如果你使用console.log(camList),你会看到什么是的,我们需要查看创建var-camList
的早期代码。如果您之前按下它,索引将已经超过当前基于零的i
值。如果您希望索引对齐,可能您的意思是camList[i]=camObj;
@Fidel90:这里有一个提示,如果capture.isOpened()
是否为false
?与camList
中有多少项相关,i
在哪里?@funkurm:当问题第一次发布时,该行不在其中。@funkurm:当问题第一次发布时,该行不在其中。嗯,这应该如您所说。我想创建一个只包含ob的数组可以打开捕获的对象(capture.isOpend())。我正在将当前循环变量传递给我的对象,但对象本身在创建它的数组中有不同的索引。@Fidel90:那么不要使用.push()
,它会添加到数组的末尾,不管该索引是什么。我想您应该手动设置索引。请尝试:camList[I]=camObj
。但这正是我使用push的原因。我知道在这里不容易理解我的意图:)顺便说一句:camList[camList.length-1]。id有效,必须再次查看我的代码:)谢谢您!很高兴我能帮忙:-德威尔,这应该是你说的工作。我想创建一个数组,该数组只包含可以打开捕获的对象(capture.isOpend())。我正在将当前循环变量传递给我的对象,但对象本身在创建它的数组中有不同的索引。@Fidel90:那么不要使用.push()
,它会添加到数组的末尾,不管该索引是什么。我认为您需要手动设置索引。试试:camList[i]=camObj
。但这正是我使用push的原因。我知道在这里很难理解我的意图:)顺便说一句:camList[camList.length-1]。id有效,必须再次查看我的代码:)谢谢您!很高兴我能帮忙