我想创建一次数组,然后用任何索引将值推入它,但是我遇到Cannot read property 'push' of undefined
错误
我有以下情况
var neg = [];
我想对任意索引随机使用推
neg[0].push([1,2]);
或
neg[22].push([1,2]);
现在我想像neg[0] = [];
一样手动定义,是否有任何一种方法可以推入我想要的任何索引?
答案 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);
将元素按给定索引推入数组。