当前位置:  开发笔记 > 编程语言 > 正文

Javascript数组初始化行为

如何解决《Javascript数组初始化行为》经验,为你挑选了1个好方法。

//修正了一个拼写错误[]应该是[[]] //抱歉//但我仍然难倒 //我想用正确数量的维度初始化一个空数组,而不是正确的元素数.

我有以下行为.

var sdata = [[]];
sdata[0][0] = 4;
sdata[0][1] = 5;

有用.

var sdata = [[]];
sdata[0][0] = 4;
sdata[0][1] = 5;
sdata[1][0] = 6;

不起作用,意味着第三个要素.

然而

var sdata = [[]];
    sdata[0] = [];
    sdata[1] = [];
sdata[0][0] = 4;
sdata[0][1] = 5;
sdata[1][0] = 6;

也有效.

这意味着我不能只创建一个空数组并给它赋值.我必须计算它将有多少行,然后初始化一个长度很长的空数组,然后给它的元素赋值.这是特别愚蠢的,因为我不知道我将获得的数据长度.

当我说它不起作用时,它意味着console.log打印vs不打印.

更新:是的,这是愚蠢的.但是有一条银线 - 你只需要在第一级进行初始化.当你给它们一个值时,下面的级别会自动初始化.

所以基本上,以下将有效

var sdata = [[]];
sdata[0][0]= 4;  // first element initialization is not a problem
sdata[0][1]= 4;  // still falls under first

但跟随不会

var sdata = [[]];
sdata[0][0]= 4;
sdata[0][1]= 4;
sdata[1][0]= 4; // no it wont, anything after first parent element requires explicit initialization

以下是

var sdata = [[]];
sdata[0]=[]
sdata[1]=[]     // explicit initialization
sdata[0][0]= 4;
sdata[0][1]= 4;
sdata[1][0]= 4; // now it will

但是以下也会奏效

var sdata = [[]];
sdata[0]=[]
sdata[1]=[]
sdata[0][0]= 4;
sdata[0][1]= 4;
sdata[1][0]= 4;    // expected to work and will
sdata[1][1]= 4;    // expected to work and will
sdata[1][0][0]=5;  // expected to work since its first element and will
sdata[1][1][1]=5;  // expected not to work since its the second element , but it will work, since parent is initialized

底线 - 只需要第一级初始化,低于此水平不是问题.

所以现在我基本上在做

for (x=0;x

我必须事先知道,我很幸运.



1> CR Drost..:

这意味着我不能只创建一个空数组并给它赋值.我必须计算它将有多少行,然后初始化一个长度很长的空数组,然后给它的元素赋值.这是特别愚蠢的,因为我不知道我将获得的数据长度.

是的,这很愚蠢.这是愚蠢的,因为计算机是愚蠢的.处理它.当然,很多人在你面前解决了这个问题.

解决它的一种方法是强制用户给你JSON.这真的很容易.而不是试图写

var sdata = [[]];
sdata[0][0] = 4;
sdata[0][1] = 5;
sdata[1][0] = 6;

你可以粘贴他们给你的东西:

var sdata = [[4,5],[6]];

这非常简单,如果出现问题,您可以责怪用户.

您可以做的另一件事是查找哪种数据边界表示新行.例如,在解析CSV时,您会查找换行符并递增行索引,然后将新数组附加到输出文本上.

最后,如果你坚持写出来,只需修改原始数组即可!您可以轻松编写以下内容:

var sdata = [];
sdata[0] = [];
sdata[0][0] = 4;
sdata[0][1] = 5;
sdata[1] = [];
sdata[1][0] = 6;

如果你进入这整个"写得太多"的话.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有