对于普通的数组如 var arr=[1,3,5] 就用$.each(arr,function(){alert(this)}) 输出的结果就是数组元素的值,这个this就是指当前处理这个元素(key)的值(value)
对于字典dictionary风格的Array 如 var arr={"tom":20,"jeek":25,"jos":26} 就用$.each(arr , function(key,value){key+"的年龄是"+value})
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery-1.11.2.js"></script>
</head>
<body>
</body>
</html>
<script type="text/javascript">
//====================================$.map()==============================================
var myArr = new Array(); //创建一个数组
//$.map(arr,fn(){})*****对arr数组调用fn函数进行处理,fn函数将处理结果返回,得到一个新的array(数组)
//【注意:$.map()是有返还值的】$.map()不能处理字典风格的数组。
//将arr数组的每个元素乘以2后返回,得到到一个新array(数组),然后赋给arr2
var arr1 = [1, 2, 3];
var arr2 = $.map(arr1, function (i) { return i * 2 }); //i指的是当前遍历的数组的每一个元素
for (var j = 0; j < arr2.length; j++) {
alert(arr2[j]);
}
//如果不用for循环,就直接用alert(arr2)也是可以输出arr2里每个元素的值的
alert(arr2); //输出 2,4,6,
var arr3 = [5, 4, 6, 3, 8, 9, 1];
var arr4 = $.map(arr3, function (value, key) { // 第一个参数是表示值 第二个参数表示索引 (如果只写一个参数,那么这个参数就是指值)
//alert(key); //输出: 0, 1, 2, 3, 4, 5, 6
//alert(value);//输出:5, 4, 6, 3, 8, 9, 1
if (value > 4 && key < 5) {
return value;
}
})
alert(arr4); //输出:5,6,8
//====================================$.each()==============================================
//$.each(arr,fn(){}) 对数组arr的每个元素调用fn函数进行处理,没有返回值。
//【注意$.each(),只是处理,没有返回值】
var arr5 = { "凡斌": 25, "黄雪辉": 22 }
//以后处理Array推荐的用法,如果我想处理key,就取它的key就行了。如果想用value就取它的value就行了。很方便,也好记
$.each(arr5, function (key, value) { alert(key + "的年龄是" + value) }) //输出 凡斌的年龄是25;黄雪辉的年龄是22
var arr6 = [1, 2, 3];
//对arr4数组调用function函数进行处理,没有返回值。
$.each(arr6, function (key, value) { alert(key = value) })//输出的结果是1,2,3
$.each(arr6, function (key, value) { alert(key + "的值是" + value) })//输出的结果是:0的值是1;1的值是2;2的值是3
//--------------------------------------------关于处理函数function()的【参数个数】问题
//没有参数,没有参数就是输出的就是value,而不是key
$.each(arr6, function () { alert(this) }); //this就是当前处理这个元素的值。输出的结果是1,2,3
//带两个参数的,前面一个参数就是arr4的是key,后面一个是arr4对应key的value
$.each(arr6, function (itme, zhi) { alert(itme + "是" + zhi) }); //输出:0是1;0是2;2是3 这个itme其实就是arr4数组的key,这个zhi 就是数组的value
//带一个参数的,这个参数实际上能就是arr4元素的key,而不是值
$.each(arr6, function (i) { alert(i) }); //所以这里输出的结果是 0,1,2
//====================================$.inArray()============================================
//$.inArray()是获取查找到元素的下标 与indexOf差不多
var arr7 = [5, 2, 9, 4, 11, 57, 89, 1, 23, 8];
var arrInArray = $.inArray(9, arr7); //获取9这个元素再arr7中的索引下标 【即:key】
alert(arrInArray); //打印出:2 注:下标从0开始
//例子:如果b数组中的元素在a数组中不存在,就将它添加到a数组中。(其实就是合并两个素组,让后对元素去重)
var a = [1, 2, 3, 4, 6];
var b = [2, 4, 5, 7, 8];
$.each(b, function (key, val) {
if ($.inArray(val, a) == -1) { //$.inArray(val,a)的作用是查找val这个元素再a数组中的下标 如果存在,那么它的返回值就是val这个元素在a数组中的下标,如果不存在就返回-1
a.push(val); //查看val这个元素是否在a数组中存在,如果不存在就将它添加到a数组中
}
})
a.sort(); //将a数组进行排序
alert(a); //打印出:1,2,3,4,5,6,7,8
//====================================$.merge()==============================================
//$.merge()合并两个数组
var c = [1, 2, 3, 4, 5, 6];
var d = [5, 6, 7, 8];
alert($.merge(c, d)); //打印出:1,2,3,4,5,6,5,6,7,8 (我们发现它仅仅是合并了两个数组而已) 其实它是将d这个数组并到了c数组里。所以这里打印出来的是c数组。
</script>
数组中some方法是用来遍历数组的
some和each的区别是,在数组some方法中如果return true就会立即终止这个数组的后续循环
<script>
var list = new Array(1, 2, 3, 4, 5, 6); //创建一个数组并给它分配了6个元素
list.some((item, index) => {
if (item == 2) {
list.splice(index, 1);//删除list中2的项
return true; //在数组some方法中,如果return true就会立即终止这个数组的后续循环
}
})
alert(list); //打印出1,3,4,5,6
</script>