我正在尝试找到一个更好的解决方案,将对象添加到数组。盒子对象来自一个单独的文件,并在不同的文件中一次一行地推送到数组中,如下所示:
function loadCols(){
collisionPoints.push(box1);
collisionPoints.push(box2);
collisionPoints.push(box3);
collisionPoints.push(box4);
collisionPoints.push(box5);
collisionPoints.push(box6);
collisionPoints.push(box7);
collisionPoints.push(box8);
collisionPoints.push(box9);
collisionPoints.push(box10);
};
我尝试过使用for循环并连接字符串"box" + i
但这没有用。
我也尝试将它们添加到创建对象的文件中的数组中,但是我无法找到将数组传递给主文件的方法。虽然这有效,但我希望有一个更清洁的解决方案。任何帮助都会受到赞赏,欢呼。
答案 0 :(得分:1)
如果我理解正确,您正在寻找在for
循环中使用动态变量的方法。如果box1
等是全局变量,您可以通过将其作为window
的属性访问它们来动态获取它们:
window['box'+i]
答案 1 :(得分:1)
您可以使用窗口对象从其字符串名称中获取变量。
function loadCols(){
for (var i=1; i<=numberOfBoxVars; i++) {
collisionPoints.push(window["box" + i]);
}
}
或者,如果您的变量在闭包中定义,并且您的loadCols函数在同一个闭包中定义,则可以使用“this”关键字代替窗口对象。
(function() {
var box1 = "1";
var box2 = "2";
...
function loadCols(){
for (var i=1; i<=numberOfBoxVars; i++) {
collisionPoints.push(this["box" + i]);
}
}
});
答案 2 :(得分:0)
如果您发送JSON数组中的所有对象,您可以这样做:
var array = JSON.parse(boxesarray);
for(var i = 0;i< array.length; i++) {
collisionPoints.push(array[i]);
}
但它需要你发送一个阵列中的所有盒子,如果这是不可能的,请发布代码为什么它不是,我会调整我的anwser。