如何从函数内的数组中调用项目

我有一个“缩放”function,它采用以下格式:

zoom( [a,b,c,d....], [a,b,c,d...] ); 

我还有一个for循环,它获取了需要进入缩放数组的值:

 ABC.getAggregation("V")[0].getItems().forEach( function (item) { var a = item.getPosition().split(";")[0]; var b = item.getPosition().split(";")[1]; ABC.zoom( [...], [...] ); }); 

如何将变量a和b添加到函数缩放的数组中?

所有变量a必须进入第一个数组,所有变量b必须进入第二个数组。

例:

  ABC.getAggregation("V")[0].getItems() //returns a list of 3 objects item.getPosition() //returns eg "0,0,0" for the first item and so on (for all 3) item.getPosition().split(";")[0] = "0" //now i want to add this to the zoom function. var a = item.getPosition().split(";")[0]; //this produces three string values "14.5". "4", "8.64" var b = item.getPosition().split(";")[1]; //this produces three string values "5.7","6.8","1" 

现在,我想将这些字符串值放入这样的缩放:

 ABC.zoom( [14.5. 4, 8.64], [5.7,6.8,1] ); //note - they're not strings anymore. 

我怎样才能达到这个效果?

您无法在.forEach()循环内执行对ABC.zoom()的调用,因为只有在执行完所有迭代后才能获取整个数据集。

我认为你需要这些方面的东西:

 var zoomA = [], zoomB = []; ABC.getAggregation("V")[0].getItems().forEach( function (item) { var a = item.getPosition().split(";")[0]; var b = item.getPosition().split(";")[1]; zoomA.push(Number(a)); zoomB.push(Number(b)); }); ABC.zoom(zoomA, zoomB); 

如果我以某种方式误解了你的想法,请告诉我。

Split返回一个字符串数组,所以item.getPosition().split(";")[0]; 将返回一个字符串,而不是三个字符串。 您需要使用,分隔符再次拆分它,将结果数组解析为int(您可以使用map函数)并传递给缩放function。