原本分享完数组 应该是字符串的学习, 但发现数组还有一些需要补充扩展的一点小知识,那就接着来深入学习数组吧。
再深入学习之前,先看看(5-数组)那天留的小练习题吧。
回顾数组一:定义一个含有5个数的数组,用两种遍历方法输出每个数
var arr1 = new Array(5);
arr1 = [1,2,3,4,5];
//遍历数组
//for
for(var i=0; i<arr1.length;i++){
console.log(arr1[i]);
}
//for in
for(i in arr1){
console.log(arr1[i]);
}
回顾数组二:定义一个空数组,利用循环往数组中添加50个数(30--79)
var num = 30;
var arr = new Array();
for(a =0; a<50; a++){
arr.push(num++);
}
console.log(arr);
回顾数组三:定义一个无序数组,利用sort对数组进行正序排序
var arr = [1,4,23,6];
arr.sort(); //[1,23,4,6]
//< 0 left right
//== 0
//> 0 right left
//从小到大
arr.sort(function(left,right){
return left - right;
});
//从大到小
arr.sort(function(left,right){
return right - left;
});
回顾数组四:生成一个随机数num,判断num 乘以100是否大于50
var num = Math.random()*100;
console.log(num);
1.数组方法扩展-concat
concat(item1,item2...) 组合多个数组,返回新数组,不操作原数组
arr1.concat(arr2,arr3,arr4...) (arr1不会发生改变),若想改变,须重新赋值,如:arr1 = arr1.concat(arr2);
示例:arr1 = [1,2,3,4,5]; arr2 = [6,7];
1、arr1.concat(); //返回arr1
2、arr1.concat(arr2); //返回[1,2,3,4,5,6,7]
2.数组方法扩展-slice
slice(start,end) 从start开始到end(不包含end),返回数组的一段,不操作原数组
如: arr = [1,2,3,4,5];
1、start和end都不写 返回整个数组arr,常用来复制数组
arr.slice() 返回[1,2,3,4,5]
2、如果end不写,从start开始到数组结束
arr.slice(1,4); 返回[2,3,4]
3、如果start是负数(-1,-2...),从数组最后一个开始返回对应的个数,大于数组的长度返回整个数组
arr.slice(-1); 返回 [5] arr.slice(-2); 返回 [4,5] arr.slice(-9); 返回arr
3.数组方法扩展-splice
splice(start,deleteCount,arr1) 从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素,操作的是原数组
如: arr = [1,2,3,4,5];
1、start和deleteCount都不写 返回空数组[]
arr.splice() 返回[]
2、如果deleteCount不写,从start开始到数组结束
arr.splice(1); 返回[2,3,4,5] arr = [1];
3、如果start是负数(-1,-2...),从数组最后一个开始截取对应的长度,大于数组的长度返回整个数组
4.数组方法扩展-indexOf
indexOf(param) 在数组中从第一个元素开始查找param,返回第一次出现的下标,如果没有找到返回-1
lastIndexOf(param) 在数组中从最后一个元素开始查找param,返回第一次出现的下标,如果没有找到返回-1
说明:indexOf 和 lastIndexOf 存在兼容性问题,最新版本的浏览器才支持,不建议使用
5.~数组length妙用~!
一起来练习道面试题:
如何快速从1-100中随机取10个不重复的数?(面试题)
var arr = [];
for(var i=1; i<=100; i++){
arr.push(i);
}
arr.sort(function(){
return Math.random()-0.5;
});
arr.length = 10;
console.log(arr);
下一个给大家分享字符串0.0