0

我在 chrome 中使用 js 控制台有一个非常奇怪的问题,如果我进入 chrome 控制台并编写:

var numero = new Array(["/php/.svn/tmp", "/php/.svn/props"]);

返回我“未定义”,所以我认为 numero 是一个包含 2 个元素的数组,但如果我写:

numero

返回:

[Array[2]]

numero.length

并返回 1 ..... 为什么?不回2???我在哪里做错了?我可以给出一个返回 2 的方法吗?提前致谢

编辑:我会解释我的问题。当我选择 2 个项目时,我有一个函数返回这个:

myFolders.getSelected()
["/php/.svn", "/php/upload.php"]

and this when selected one items:

myFolders.getSelected()
"/php/upload.php"

正如你注意到的第二个不是数组。

现在我使用这种方法来激活更改所选项目并计算全局变量:

function calcoloNumeroElementi(){
    var numero = new Array(myFolders.getSelected());
    numeroElementiSelezionati = numero[0].length;
}

但当我只选择一项时,总是返回 1 或字符数。

4

3 回答 3

6

您正在创建一个array内部 other array,这就是它返回 1 的原因。

console.log( numero[0].length ); // 2

所以应该是:

var numero = ["/php/.svn/tmp", "/php/.svn/props"];

或者

var numero = new Array("/php/.svn/tmp", "/php/.svn/props"); // without `[` and `]`

然后使用console.log( numero.length );

于 2013-08-26T17:07:28.453 回答
1

不要使用新数组,只使用文字符号:

var numero = ["/php/.svn/tmp", "/php/.svn/props"];

更新(根据您的评论)

如果您的函数myFolders.getSelected()返回单个字符串并且您想将其添加到数组中,您可以以声明方式执行此操作:

var numero = [myFolders.getSelected()]

或者,如果您计划添加多个值,例如在循环中,您可以将新值推送到数组中

var numero = [];
...
numero.push(myFolders.getSelected());
于 2013-08-26T17:07:46.800 回答
0

["/php/.svn/tmp", "/php/.svn/props"]返回一个包含两个字符串的数组。

new Array(arg0, arg1 ... argn);返回一个数组,其中定义为参数的元素

new Array(["/php/.svn/tmp", "/php/.svn/props"]);将返回第一个元素所在的数组和两个字符串的数组。

试试看numero[0].length,看看你会得到什么。

或者像这样定义你的数组var numero = ["/php/.svn/tmp", "/php/.svn/props"];

于 2013-08-26T17:09:45.043 回答