我正在将一个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
答案 0 :(得分:3)
好像你正在使用带字符串索引的数组。这样做不会很好:
> var array = [];
> array['foo'] = 'bar';
> array.length
0
改为使用对象:
var obj = {};
obj['foo'] = 'bar';
仅将数组用于数字索引。
答案 1 :(得分:0)
您可以遍历数组或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都不起作用