我在chrome中使用js控制台有一个非常奇怪的问题, 如果我进入chrome控制台并写道:
var numero = new Array(["/php/.svn/tmp", "/php/.svn/props"]);
返回“undefined”所以我认为numero是一个包含2个元素的数组,但是如果我写的话:
numero
返回:
[Array[2]]
之后
numero.length
并返回1 .....为什么?不要回2 ??? 我哪里做错了? 我能给出一个返回2的方法吗? 提前谢谢
编辑: 我会解释我的问题。 我有一个功能,当我选择2项时返回这个:
myFolders.getSelected()
["/php/.svn", "/php/upload.php"]
这个选择了一项:
myFolders.getSelected()
"/php/upload.php"
如你所知,第二个不是数组。
现在我使用此方法激活更改所选项目以计算全局变量:
function calcoloNumeroElementi(){
var numero = new Array(myFolders.getSelected());
numeroElementiSelezionati = numero[0].length;
}
但是当我只选择一个项目时,返回总是1或字符数。
答案 0 :(得分:6)
您正在其他array
内创建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 );
答案 1 :(得分:1)
不要使用New Array,只使用文字表示法:
var numero = ["/php/.svn/tmp", "/php/.svn/props"];
更新(根据您的评论)
如果您的函数myFolders.getSelected()
返回单个字符串并且您想将其添加到数组,则可以声明性地执行此操作:
var numero = [myFolders.getSelected()]
或者,如果您打算添加多个值,例如在循环中,您可以将新值推送到数组
var numero = [];
...
numero.push(myFolders.getSelected());
答案 2 :(得分: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"];