如何将数组推送到另一个数组以生成2级数组?

时间:2017-03-03 07:36:40

标签: javascript arrays

虽然我的目标是制作一个像这样的阵列,但这听起来可能会让人感到困惑。

var array2D= [
    { locations: [0, 0, 0], status: ["", "", ""] },
    { locations: [0, 0, 0], status: ["", "", ""] },
    { locations: [0, 0, 0], status: ["", "", ""] }
],

所以请考虑我是否有如下所示的数组。

var locations = [0,0,0];
var status = ["","",""]; 

我可以以某种方式推动他们制作2D阵列吗? 我尝试过类似的东西,但它没有工作

var the2Darray =[];
the2Darray.push(location,status);

3 个答案:

答案 0 :(得分:3)

var locations = [0,0,0];
var status = ["","",""]; 
var the2Darray =[];
the2Darray.push({locations: locations,status: status});

答案 1 :(得分:2)

你必须创建一个带有键作为位置和状态的对象,为它们分配相应的数组,然后简单地推送到你的新数组。

org.apache.sling.api.resource.Resource

答案 2 :(得分:1)

假设您需要独立数组,而不是需要使用Array#slice来获取primitive types的副本,如字符串,数字,布尔值,空值,未定义,符号(ECMAScript 2015中的新内容)。< / p>

&#13;
&#13;
var locations = [0, 0, 0],
    status = ["", "", ""];
    array = [],
    l = 3;

while (l--) {
    array.push({ locations: locations.slice(), status: status.slice() });
}

array[2].locations[0] = 42;

console.log(array)
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

如果不使用拼接,请看看42

正如您将看到的,locationsstatus的所有数组都与原始数组共享相同的引用。

&#13;
&#13;
var locations = [0, 0, 0],
    status = ["", "", ""];
    array = [],
    l = 3;

while (l--) {
    array.push({ locations: locations, status: status });
}

array[2].locations[0] = 42;

console.log(array)
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;