在javascript中动态添加数组

时间:2016-05-02 21:34:33

标签: javascript arrays

我正在尝试在javascript中动态添加数组。我需要以下格式的数据 -

var dataArray = [[],[],[],.....,[]];

如何初始化这种数组?假设我有三个要添加的数组,我可以按如下方式初始化 -

var dataArray = [[],[],[]];

这将只接受三个要添加的记录。但是,如果要添加大量数组,我该怎么办?在这里,我无法知道作为输入获得的数据量。 我尝试过使用concat()和merge()方法,这些方法直接将内容添加到单个数组中,但这不是我想要的。 任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

您可以像这样在数组中构建或添加数组:

var dataArray = [];
dataArray.push([1,2,3]);
dataArray.push([3,4,5]);

console.log(dataArray);   // [[1,2,3], [3,4,5]]

或者,如果要向子阵列添加元素:

var dataArray = [];
dataArray.push([1,2,3]);
dataArray.push([3,4,5]);

dataArray[0].push(4);
dataArray[1].push(9);
console.log(dataArray);   // [[1,2,3,4], [3,4,5,9]]

通过将数组分配给外部数组的元素来初始化子数组。然后,您可以直接在子数组元素上使用数组操作:

// create a sub-array element
dataArray[2] = [];
dataArray[2].push(8);
dataArray[2].push(7);
console.log(dataArray[2]);  // [8,7]
console.log(dataArray);     // [[1,2,3,4], [3,4,5,9], [8,7]]

看来你不明白的关键是数组阵列就是这样。它是一个外部数组,外部数组中的每个元素本身就是一个数组。您可以使用普通数组方法对外部数组或内部数组进行操作。要在内部数组上操作,可以从外部数组中获取该元素,然后将其视为数组。例如:

var dataArray = [];
dataArray.push([1,2,3]);
dataArray.push([3,4,5]);
console.log(dataArray);   // [[1,2,3], [3,4,5]]

var innerArray = dataArray[0];
console.log(innerArray);   // [1,2,3]
innerArray.push(12);
console.log(innerArray);   // [1,2,3,12]
innerArray.legnth = 2;
console.log(innerArray);   // [1,2]
innerArray.push(9,8,7);
console.log(innerArray);   // [1,2,9,8,7]
innerArray.splice(1,2);
console.log(innerArray);   // [1,8,7]

答案 1 :(得分:0)

您已写过"我正在尝试在 javascript " 中动态添加数组 简单的方法是使用Array.prototype.push方法:

var arr1 = [1,2], arr2 = [3,4], arr3 = [5,6], arr4 = [7,8], arr5 = [9,10],
    dataArray = [];

[].push.apply(dataArray, [arr1, arr2, arr3, arr4, arr5]);
console.log(JSON.stringify(dataArray, 0, 4));

console.log输出:

[
    [
        1,
        2
    ],
    [
        3,
        4
    ],
    [
        5,
        6
    ],
    [
        7,
        8
    ],
    [
        9,
        10
    ]
]

答案 2 :(得分:0)

有很多方法可以做到这一点。一个简单的可能是

var arrayN = n => Array(n).fill([])
document.write("<pre>" + JSON.stringify(arrayN(10)) + "</pre>")

另一种想法是,如果你已经有数组数组,那么最简单的连接它们的方法应该是使用新的扩展运算符,如;

var arr = [[1,2,3],[1,3,5]],
    brr = [[3,2,1],[7,8,9]];
arr.push(...brr);

document.write("<pre>" + JSON.stringify(arr) + "</pre>");