一、概念
js数组与jquery的数组,在我理解,本质上是一回事。jquery只是操作js的一个库,它的数组结构其实就是js的数组结构。
json是一种js对象,所以json数组其实就是js对象数组,每个数组元素其实是一个json对象。
二、创建
1、js数组的创建
//返回空数组
var arr = new Array();
//返回一个可以容纳5个元素的空数组
var arr = new Array(5);
//返回一个已初始化的数组
var arr = new Array(1,2,3,4,5);
2、jquery数组的创建
使用jquery的对象选择器,选择结果为多个的,自然就得到了jquery数组。如:
var arrCbx = $("input[type='checkbox']");
3、json数组的创建
json数组的创建跟json对象的创建是一个意思。
//这个就是json数组,中括号,里面1-n个大括号,大括号之间用逗号(,)分隔
var j = [{c11:"2",c12:"s12"},{c21:21,c22:"s22"}];
//这个里面包含了json数组
var j = {
a:"1",
b:"s",
c:[{c11:"2",c12:"s12"},{c21:21,c22:"s22"}]
};
三、遍历
1、js遍历
1.1 最简单的for循环
for(j = 0; j < arr.length; j++) {
//操作
}
1.2 优化版的for循环
for(j = 0,len=arr.length; j < len; j++) {
//操作
}
1.3 数组自带的forEach函数,比普通的for循环效率要低
arr.forEach(function(e){
});
//forEach的全参数版
[].forEach(function(item,index,array){
//code something
});
1.4 forEach变种,性能比普通的foreach还要差
Array.prototype.forEach.call(arr,function(el){
});
1.5 forin
for(j in arr) {
}
它的效率是所有的遍历中最低的。
1.6 forof遍历(需要ES6支持)
for(let value of arr) {
});
这种方式是es6里面用到的,性能要好于forin,但仍然比不上普通for循环。
1.7 map
map虽然也遍历数组,但他的实质是遍历且逐个处理数组元素并返回一个新的数组。
var numbers = [4, 9, 16, 25];
var newNumbers = numbers.map(Math.sqrt);
2、jquery数组遍历
2.1 .each()
//arr是数组本身,相当于php的foreach($arr as $index => $obj)
$.each(arr, function(index, obj)){
$(this)//还可以用这个来代表obj
}
//.each还可以这个样用,相当于jquery的对象扩展
$("input[type='checkbox']").each(function(i){
$(this).attr("checked",true);
});
2.2 .map()
//跟js的map一样,回调函数是为了返回新的(加工后的)数组元素。
var retArr = $.map(arr, function(value, index){
return (value.toUpperCase() + index);
});
<script>
//举一些例子
//var j = {a:"1",
// b:"s",
// c:[{c11:"2",c12:"s12"},{c21:21,c22:"s22"}]
// };
//document.write("j.a = " + j.a +"<br>");
//document.write("j.b = " + j.b +"<br>");
//document.write("j.c[0].c11 = " + j.c[0].c11 +"<br>");
var j = [{ name: "张三", sex: "男" }, { name: "李四", sex: "女" }, { name: "王五", sex: "gay"}];
for(var i=0, len=j.length; i<len; i++){
document.write("name: " + j[i].name + ", sex: " + j[i].sex + "<br>");
}
$.each(j, function(i){
document.write("name: " + j[i].name + ", sex: " + j[i].sex + "<br>");
})
</script>
要饭二维码
