我有一个“缩放”功能,它采用以下格式:
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.
如何实现这一结果?
答案 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);
如果我以某种方式误解了你的目的,请告诉我。