1.对象数组变数组,或变字符串
var ids = $.map($("#deviceTable").bootstrapTable('getSelections'), function (row) {
return row.id;
});
jQuery下有个概念叫“类数组”,比如$( " li " ),当取到一个集合的时候,会有数组的一些属性,但是instancseof Array仍然是false。但是var a=$( "li" ).get()这样处理一下,然后instancseof Array就返回true。
要注意var a=$( "li" ).get(1)里头加序列号可以取到单个元素,这些元素的性质不是jQuery对象,而是js对象,所以不可直接用jquery方法。
map()的功能主要有两步,第一步就是遍历,第二步就是替换。
$( " li " ).map( function( ){
return $(this).text( ); // 注意return关键字不可少
} )
map先遍历,每一项都返回一个text()值,然后map会将这些值自动去替换$("li")集合的每一项值,所以这个时候还是个类数组(因为还是$(" li ")的壳子),不是个真正的数组。于是后面加个get()操作就变成真正的数组了,于是可以用join()这样专属于数组的方法。
$( " li " ).map( function( ){
return $(this).text( );
} ).get( ).join("%") // 拼接成字符串,中间用“%”隔开
2.each
前些天记录了java中for循环取map,发现用jquery的each一样可以取map(我称之为js的map,不要较劲),且顺序和map中顺序一致。废话少说,看代码
Js代码
var map =
{
地名: ["北京","天津","上海"],
民族: ["汉族","藏族","维吾尔族"]
};
$.each(map,function(key,values){
console.log(key);
$(values).each(function(){
console.log("/t" + this);
});
});
var map =
{
地名: ["北京","天津","上海"],
民族: ["汉族","藏族","维吾尔族"]
};
$.each(map,function(key,values){
console.log(key);
$(values).each(function(){
console.log("/t" + this);
});
});
如果安装了firebug,控制台输出如下树状结构:
地名
北京
天津
上海
民族
汉族
藏族
维吾尔族
注意:jquery中的$().each和$.each的区别,前者只能遍历数组,后者可以遍历数组和对象