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

时间:2016-08-04 23:35:04

标签: javascript jquery arrays loops indexing

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

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添加到函数zoom的数组中?

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

示例:

 ABC.getAggregation("V")[0].getItems()
 //returns a list of 3 objects
 item.getPosition()
 //returns e.g "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.

如何实现这一结果?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您无法在ABC.zoom()循环内执行对.forEach()的调用,因为一旦所有迭代都被执行,您将只获取整个数据集。

我认为你需要这样的东西:

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

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