1.定义:① var arr = [1,2,3];② var arr = new Array(1,2,3);
2.属性:length-->可对数组进行读、写var arr =[1,2,3];alert(arr.length); // 3arr.length = 1 ; //此时数组里仅剩下一个值,其它值被清空
扩展:快速清空数组元素的方法:① arr.length = 0;② arr[]; //效率比上面的高点
3.方法:① 添加:push()、unshift() push():添加值到数组末尾,返回数组的最新长度 unshift():添加值到数组前端,返回数组的最新长度
② 删除:pop()、shift() pop():删除数组最后面的值,返回被删除的那个值 shift():删除数组最前面的值,返回被删除的那个值
实例:
<script> var arr =[1,2,3,4,5,6]; arr.unshift(arr.pop()); //把数组的最后一个值删除并插入到第一个位置 alert(arr); //6,1,2,3,4,5</script>
<script> var arr =[1,2,3,4,5,6]; arr.push(arr.shift()); //把数组的第一个值删除并插入到最后一个位置 alert(arr); //2,3,4,5,6,1</script>
③ 添加、删除、替换:splice()splice():能对数组元素进行添加、删除、替换操作,返回值为被删除的那个值,如果没有删除操作,将无返回值。实例:
<script> var arr = [1,2,3,4,5,6]; arr.splice(0,2); // 从第0位开始,删除两个值 alert(arr); // 3,4,5,6 arr.splice(4,1,'lily'); //从第4位开始,添加1个值“lily” alert(arr); //3,4,5,6,lily arr.splice(1,0,'jack'); //把4换成'jack' // alert(arr); //3,jack,4,5,6,lily</script>
实例:数组去重
<script> var arr =[1,2,3,4,3,2,3,5,6]; for(var i=0; i<arr.length; i++){ for(var j=i+1; j<arr.length; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } alert(arr); // 1,2,3,4,5,6</script>
④ 排序:sort()方式一:按照字符编码排序
<script> var arr = ['b','d','a','c']; arr.sort(); alert(arr); //a,b,c,d</script>
方式二:借助比较函数去排序 实例:有序排序
<script> var arrWidth = ['10px','30px','222px','2px']; arrWidth.sort(function(a,b){ return parseInt(a)-parseInt(b); }); alert(arrWidth); //2px,10px,30px,222px</script>
实例:随机排序
<script> var arr = [1,2,3,4,5,6,7]; arr.sort(function(a,b){ return Math.random()-0.5; }); alert(arr); //2,3,1,5,6,4,7</script>
扩展:随机函数Math.random();Math.random()是0~1之间的随机函数Math.round()是四舍五入取整的函数Math.ceil()向上取整函数0~1之间的随机整数:Math.round(Math.random());0~10之间的随机整数:Math.round(Math.random()*10);5~10之间的随机整数:Math.round(Math.random()*5+5);10~20之间的随机整数:Math.round(Math.random()*10+10);20~100之间的随机整数:Math.round(Math.random()*80+20);由上:x~y之间的随机整数: Math.round(Math.random()*(y-x))+x);0~x之间的随机整数: Math.round(Math.random()*x);1~x之间的随机整数: Math.ceil(Math.random()*x);
④ 连接数组:concat()
<script> var arr1 = [1,2,3]; var arr2 = [4,5,6]; var arr3 = [7,8,9]; alert(arr1.concat(arr2,arr3)); //1,2,3,4,5,6,7,8,9</script>
⑤ 颠倒数组位置: reverse()
<script> var arr1 = [1,2,3,4,5,6]; arr1.reverse(); alert(arr1); //6,5,4,3,2,1</script>
扩展:颠倒字符串位置 var str = "abcdef"; alert(str.split('').reverse().join('')); //fedcba
⑥ join();
join() 方法用于把数组中的所有元素组合成一个字符串,元素根据指定分隔符进行分割,返回值是字符串。
<script> var arr=['red','yellow','pink']; alert(arr.join("-")); //red-yellow-pink alert(typeof arr.join()); //string</script>
⑦ 迭代方法:every()、filter()、forEach()、map()、some()
传入这些方法中的函数会接收三个参数: 数组项的值 该项在数组中的位置 数组对象本身
第一种: every()、some() 用于查询数组中的项是否满足某个条件
every():传入的函数必须对每一项都返回ture,这个方法才会返回ture,否则返回false。
<script> var number = [1,2,3,4,5,6,7,8,9]; var result = number.every(function(item,index,array){ return (item > 2); }); alert(result); // false,因为传入的函数只有部分满足>2这个条件</script>
some():传入的函数中有一项返回ture,这个方法就返回ture。
<script> var number = [1,2,3,4,5,6,7,8,9]; var result = number.some(function(item,index,array){ return (item > 2); }); alert(result); // ture ,传入的函数只要有一项满足>2的条件即可</script>
第二种: filter() 对传入的函数,筛选出符合条件的数组项 ,返回ture的项组成的数组
实例:返回一个所有的值大于2的数组。
<script> var number = [1,2,3,4,5,6,7,8,9]; var result = number.filter(function(item,index,array){ return (item>2); }) alert(result); // 3,4,5,6,7,8,9</script>
第三种:map() 对原数组的每一个对应项做相应操作后,返回其操作后的数组
例如:给数组中的每一项乘以2,然后返回这些乘积组成的数组
<script> var number = [1,2,3,4,5,6,7,8,9]; var result = number.map(function(item,index,array){ return item * 2; }); alert(result); // 2,4,6,8,10,12,14,16,18 结果会在原数组的基础上每项乘以2</script>
第四种 :forEach() 对数组中的每一项运行传入的函数,无返回值,本质上与for循环迭代数组一样。
<script> var number = [1,2,3,4,5,6,7,8,9]; number.forEach(function(){ // 做点什么... });</script>
参考资料:妙味课程视频、Javascript高级程序设计
新闻热点
疑难解答