1、jQuery中的map使用方法
<!DOCTYPE html> <html> <head> <style>p { color:red; }</style> <script type="text/javascript" src="/jquery/jquery.js"></script> </head> <body> <form method="post" action=""> <fieldset> <div> <label for="two">2</label> <input type="checkbox" value="2" id="two" name="number[]"> </div> <div> <label for="four">4</label> <input type="checkbox" value="4" id="four" name="number[]"> </div> <div> <label for="six">6</label> <input type="checkbox" value="6" id="six" name="number[]"> </div> <div> <label for="eight">8</label> <input type="checkbox" value="8" id="eight" name="number[]"> </div> </fieldset> </form> <p><b>Values: </b></p> <script> $("p").append($(':checkbox').map(function() { return this.id; }).get().join(',')); </script> </body> </html>
jQuery通过对当前集合中的每个元素调用函数对象,写法
.map(callback(index,element))
2、forEach方法
这个方法只能在非IE浏览器中使用,IE浏览器中需要写个支持,应用于数组的遍历,调用数组中的每个元素
array.forEach(callback[, thisObject]);
if (!Array.prototype.forEach) { Array.prototype.forEach = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) fun.call(thisp, this[i], i, this); } }; }
function printBr(element, index, array) {//数组元素,元素的索引,数组本身 document.write("<br />[" + index + "] is " + element ); } [12, 5, 8, 130, 44].forEach(printBr);
//这里是示例代码
//这里写了一个支持方法
注意:forEach无法在所有元素都传递给调用的函数之前终止(而for循环却有break方法),如果要提前终止,必须把forEach放在try块中,并能抛出一个异常。如果forEach()调用的函数抛出foreach.break异常,循环会提前终止:(也可以考虑用if+return的方式来跳出)
function foreach(a,b,c){ try{ a.forEach(b,c); }catch(e){ if(e===foreach.break)return; else throw e; } } foreach.break=new Error("StopIteration"); }
3、for in
可以用来遍历数组,也可以遍历对象
var a = {"first":1,"second":2,"third":3};
上面的这种形式就可以用for in的方式遍历
for(var x in a){ alert(a[x]); }