多维Javascript开放数组
我在分配和检索开放数组中元素的值时遇到困难,数组的大小和维度不是固定的,因此在迭代过程中它会膨胀或收缩。我将数组声明为多维Javascript开放数组,javascript,arrays,Javascript,Arrays,我在分配和检索开放数组中元素的值时遇到困难,数组的大小和维度不是固定的,因此在迭代过程中它会膨胀或收缩。我将数组声明为var节点[]尝试分配、检索值和获取数组中任何维度的长度会导致错误的值。特别是使用varle=NODES[0].length代码我希望看到第一维度的总长度 var NODES =[[]] scene = editor.scene; scene.traverse( function(e) { if ( (e instanceof THREE.Lin
var节点[]代码>尝试分配、检索值和获取数组中任何维度的长度会导致错误的值。特别是使用varle=NODES[0].length代码>代码我希望看到第一维度的总长度
var NODES =[[]]
scene = editor.scene;
scene.traverse( function(e) {
if ( (e instanceof THREE.Line) && (e.name = 'main line' ) )
{
for (i=0; i<e.geometry.vertices.length; i++){
var x = e.position.x+ e.geometry.vertices[i].x
var y = e.position.y+ e.geometry.vertices[i].y
var z = e.position.z+ e.geometry.vertices[i].z
NODES[node_cnt,0] = x;
NODES[node_cnt,1] = y;
NODES[node_cnt,2] = z;
node_cnt++;
}
cnt++;
};
var le = NODES[0].length ;
EXPECTED RESULT
NODES[0][0] = 10; NODES[0][1] = 20; NODES[0][3] = 30;
NODES[1][0] = 40; NODES[1][1] = 50; NODES[1][3] = 60;
NODES[2][0] = 70; NODES[2][1] = 80; NODES[2][3] = 90;
with `var le = NODES[0].length ;` I expect to see 3 because I'm requesting the length of 1st dimension
var节点=[]]
scene=editor.scene;
场景.遍历(函数(e){
if((e instanceof THREE.Line)&&(e.name='main Line'))
{
对于(i=0;i这是多维数组的javascript解释,节点是一个数组,实际上包含3个数组,节点中包含的每个数组都包含一个字符串:
var NODES = [[],[],[]];
for (var i = 0; i < 10 ; i++) {
NODES[0].push(i + 'x');
NODES[1].push(i + 'y');
NODES[2].push(i + 'z');
}
console.log(NODES[0].lenght);
对不起,我不太清楚node\u cnt
和cnt
是什么意思,但我认为您应该这样做:
var NODES =[[],[],[]]
scene = editor.scene;
scene.traverse( function(e) {
if ( (e instanceof THREE.Line) && (e.name = 'main line' ) )
{
for (i=0; i<e.geometry.vertices.length; i++){
var x = e.position.x+ e.geometry.vertices[i].x
var y = e.position.y+ e.geometry.vertices[i].y
var z = e.position.z+ e.geometry.vertices[i].z
NODES[0].push(x);
NODES[1].push(y);
NODES[2].push(z);
node_cnt++;
}
cnt++;
};
var le = NODES[0].length ;
var节点=[]、[]、[]
scene=editor.scene;
场景.遍历(函数(e){
if((e instanceof THREE.Line)&&(e.name='main Line'))
{
对于(i=0;i这里有什么问题?除了节点[node\u cnt,0]
整个数组结构没有产生正确的值,它没有分配2D数组,我设置了断点来监视数组,在那里我可以看到数组从来没有被解释为2D,这是我的意图。你为什么要做节点[node\u cnt,0]
?这些行中的每一行都将等价于节点[0]
,节点[1]
,节点[2]
我将其更改为节点[node\u cnt][0]=x;
没有任何显著的效果我认为我没有用正确的javascript语法正确地分配开放数组,它类似于独立编译器中的嵌套数组,其中数组是开放的,但我不确定它在javascript中是否有效。是的,现在这是有意义的,让我再仔细研究一下,我会接受它作为回答。
var NODES =[[],[],[]]
scene = editor.scene;
scene.traverse( function(e) {
if ( (e instanceof THREE.Line) && (e.name = 'main line' ) )
{
for (i=0; i<e.geometry.vertices.length; i++){
var x = e.position.x+ e.geometry.vertices[i].x
var y = e.position.y+ e.geometry.vertices[i].y
var z = e.position.z+ e.geometry.vertices[i].z
NODES[0].push(x);
NODES[1].push(y);
NODES[2].push(z);
node_cnt++;
}
cnt++;
};
var le = NODES[0].length ;