将另一个文件中的对象添加到单独文件中的数组

时间:2016-05-04 11:58:22

标签: javascript

我正在尝试找到一个更好的解决方案,将对象添加到数组。盒子对象来自一个单独的文件,并在不同的文件中一次一行地推送到数组中,如下所示:

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但这没有用。 我也尝试将它们添加到创建对象的文件中的数组中,但是我无法找到将数组传递给主文件的方法。虽然这有效,但我希望有一个更清洁的解决方案。任何帮助都会受到赞赏,欢呼。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您正在寻找在for循环中使用动态变量的方法。如果box1等是全局变量,您可以通过将其作为window的属性访问它们来动态获取它们:

window['box'+i]

见这里:Use dynamic variable names in JavaScript

答案 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。