gpt4 book ai didi

javascript - 动态数组创建尝试将值动态插入数组后不起作用

转载 作者:行者123 更新时间:2023-11-28 15:16:18 25 4
gpt4 key购买 nike

我有 3 个数组,如下所示:

我动态创建的

var count =3;
for (var j = 0; j < count; j++) {
eval('var array' + j + '=[]');
}

array0[] , array1[], array2[]

还有另一个数组:

var arraycomp = [1,2,3];

我还有另一个数组:

var valarray = [1,2,3,2,1,3,1,2,3,2,3,4,5,6,7]

我所做的事情如下:

for(var k=0;k<arraycomp.length;k++){
for(var i=0;i<valarray.length;i++){
if(valarray[i]==arraycomp[k]){
var arrayname = "array"+k;
arrayname.push(valarray[i]);
}
}
}

我需要的是:

 array0[] having 1's
array2[] having 2's
array3[] having 3's

但它不起作用:

我收到错误:

var arrayname = "array"+k;
arrayname.push(valarray[i]);

错误是:

Can not push to arrayname

我尝试了另一种选择:

var arrayname = "array"+k;
var len = arrayname .length;
arrayname [len ] = valarray[i];

如何将其视为数组:var arrayname = "array"+k; 它被视为变量。

最佳答案

以下代码不起作用。

if(valarray[i]==arraycomp[k]){
var arrayname = "array"+k;
arrayname.push(valarray[i]);
}

("array"+k) 仍然是一个像“array0”或“array1”这样的字符串。它不是数组,因此不可能将其用作数组。您可以尝试使用 eval() 来获取数组实例,但正如@Rory 指出的那样,您不应该使用 eval()。这是 Javascript 的邪恶之一,并且具有非常具体的用例,创建数组不是其中之一。

您可以尝试为您的程序创建一个二维数组,如下所示

var count =3;
var my2dArr = [];
var arraycomp = [1,2,3];
var valarray = [1,2,3,2,1,3,1,2,3,2,3,4,5,6,7]

for (var j = 0; j < count; j++) {
my2dArr.push([]);
}
for(var k=0;k<arraycomp.length;k++){
for(var i=0;i<valarray.length;i++){
if(valarray[i]==arraycomp[k]){
my2dArr[k].push(valarray[i]);
}
}
}

在 Javascript 中,二维数组只是数组的数组,因此所有子数组都可以具有任意长度。

关于javascript - 动态数组创建尝试将值动态插入数组后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33774466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com