Javascript数组行为很奇怪

时间:2012-06-21 20:09:09

标签: javascript jquery xcode arrays cordova

我正在将一个JSON对象和一个数组传递给Javascript函数,但是当我发出警报时,该数组会为空,除非我提醒某个特定值。

function myFunction(jsonObj, array){
    alert(array['item1']['name']);    //alerts "item1"
    alert(array);                     // alerts "" (not [object] as I'd expect)
    alert(array.join(''));            // alerts ""
}

我错过了什么?

我正在开发xcode上的phonegap,还使用jQuery和Jquery Mobile

3 个答案:

答案 0 :(得分:3)

好像你正在使用带字符串索引的数组。这样做不会很好:

> var array = [];
> array['foo'] = 'bar';
> array.length
0

改为使用对象:

var obj = {};
obj['foo'] = 'bar';

仅将数组用于数字索引。

答案 1 :(得分:0)

使用JQuery's map function

您可以遍历数组或JSON对象中的所有项目。

顺便提一下,将console.log(数组)添加到您的代码和chrome web dev环境中,或者在firebug中检查它的结构。

答案 2 :(得分:0)

数组只能将数字作为索引,以便使用常规数组函数,如join

但是,关联数组的处理方式与JSON对象相同。 您可以像这样在关联数组中进行连接:

var temp=[];
temp['item']='hello ';
temp['item2']='world';
var joinedString="";
for( i in temp ){
     console.log(temp[i];
     joinedString+=temp[i];
}
 alert(joinedString);   // Prints hello world

只需像地图一样使用它并使用foreach循环。正常的数组函数,如join,length和all都不起作用