如何在JavaScript中将新元素推送到具有未定义索引的数组

时间:2019-04-22 18:59:47

标签: javascript arrays

我想创建一次数组,然后用任何索引将值推入它,但是我遇到Cannot read property 'push' of undefined错误

我有以下情况

var neg = [];

我想对任意索引随机使用推

neg[0].push([1,2]);

neg[22].push([1,2]);

现在我想像neg[0] = [];一样手动定义,是否有任何一种方法可以推入我想要的任何索引?

5 个答案:

答案 0 :(得分:2)

Push将元素添加到数组的末尾。例如:

var neg = [];
neg.push(3); //this will add the number 3 to the end of your array

这里的问题是您试图向未定义的元素添加值:

var neg = [];
neg[0].push([1,2]); // <-- neg[0] is not defined at this moment, and you're treating it as an array object.

如果将元素定义为数组,则不会出现这样的错误:

var neg = [];
neg[0] = [];
neg[22] = [];

neg[0].push([1,2]);
neg[22].push([1,2]);

或者(可能是您可能正在寻找的),您可以使用所需的索引设置数组中任何元素的值:

var neg = [];

neg[0] = [1,2];
neg[22] = [1,2];

答案 1 :(得分:1)

如果您提前知道,可以指定数组的大小,例如var neg = new Array(40);,或者更好的是var neg = [40];将创建一个包含40个未定义元素的新数组。

创建后,只要0 <= index <= 39都可以在任何索引处更改值。

答案 2 :(得分:1)

这是一种快速完成您想要的事情的方法。

var arr = [];

(arr[0]=[]).push([1,2]);

console.log(arr)


同样更安全的方法是检查此索引处是否已存在一个数组,否则将其替换为空数组–上面的代码将使用一个空数组替换该数组(如果已存在)。

// creates an array at index 0 only if there's no array at this index.
// pushes an array of [1, 2] to the existing array at 0 index
// or the newly created empty one.
(arr[0] || (arr[0] = [])).push([1, 2]);;

var arr = [];

arr[0] = [1];

(arr[0]||(arr[0]=[])).push(2,3);

console.log(arr)

答案 3 :(得分:0)

您必须先将其设置为空数组,然后才能推送它。

neg[0] = neg[0] || []
neg[0].push([1,2]);

答案 4 :(得分:-1)

您可以使用array.splice(your_index, 0, your_element);将元素按给定索引推入数组。