数组
- 一、数组长度--length属性
- 二、数组转字符串--toString(),但是有逗号
- 三、增删改查--push()、unshift()、pop()、shift()、splice()、slice()、indexOf()
- 四、数组反转--reverse()
- 五、数组排序--sort()
- 六、数组连接concat()--不可修改原数组
- 七、数组以什么连接join()--不可修改原数组
- 八、map()--对数组进行处理,返回一个全新的数组
- 九、filter()--过滤数组,返回一个全新的数组
- 十、some()--检测数组是否满足指定条件,直接返回布尔值,用法与filter相同
- 十一、forEach()--对数组的元素做事,针对的是对数组的每一项做事情
- 十二、排序问题
- 十三、数组去重
一、数组长度–length属性
此属性可以更改数组的长度、值的个数以及清空
var arr=[2,4,3,5,6,3,1];
console.log(arr.length) //7
arr.length=1;
console.log(arr.length,arr) //1,[2]
arr.length=0;
console.log(arr.length,arr) //0,[]
var arr=[];
console.log(arr.length,arr) //0,[]
二、数组转字符串–toString(),但是有逗号
var arr1=[2,3,1,1,2,3];
console.log(arr1.toString()) //2,3,1,1,2,3
var arr2=arr1.toString();
console.log(arr2) //2,3,1,1,2,3
三、增删改查–push()、unshift()、pop()、shift()、splice()、slice()、indexOf()
1.数组结尾增加push()–返回的是长度,且改变原数组
var arr6=[2,3,1,1,2,3];
console.log(arr1)
var arr7=arr6.push(9) //返回的是数组长度
console.log(arr7,arr6) //再重新打印arr6发现数组已发生变化
var arr8=arr6.push([9,9,9])
console.log(arr8,arr6) //[9,9,9]是看做一项处理
var arr9=arr6.push(0,0,0)
console.log(arr9,arr6) //11,[2, 3, 1, 1, 2, 3, 9, Array(3), 0, 0, 0]
2.数组开头追加unshift()–返回的是长度,且改变原数组
var unarr=[1,2,3];
var unarr1=unarr.unshift(0);
console.log(unarr1,unarr) //4 [0, 1, 2, 3]
3.数组删除结尾元素pop()–返回的是删除元素,且改变原数组
var unarr2=unarr.pop(4)
console.log(unarr2,unarr) // 4 [0, 1, 2, 3, 3]
4.数组删除开头元素shift()–返回的是删除元素,且改变原数组
var unarr4=[3,1,2]
var unarr3=unarr4.shift(3,1)
console.log(unarr3,unarr4) //3 [1,2]
注意:pop返回的长度是删除后的长度,shift返回的是删除元素,并且pop和shift每次只能删除一位
5.任意位置添加/删除元素splice()–返回的是被处理之后的数组
(从哪一位开始删,删几个,新值)
var sarr=[1,2,3];
var sarr1=sarr.splice(1,2,5)//删除指定元素后返回被删除的元素。
console.log(sarr1,sarr) //[2, 3] [1, 5]
var sarr2=sarr.splice(0,0,4)
console.log(sarr2,sarr) //[] [4, 1, 5]
6.截取slice()–(开始,结尾),但不包含结尾且原先数组不会改变
(含头不含尾)
var jarr=[1,2,3,4]
var jarr1=jarr.slice(1,3)
console.log(jarr1,jarr)// [2, 3] [1, 2, 3, 4]
7.查找indexOf()–返回结果是角标,若查不到则返回-1
(查到即返回,不会继续查找下去)
var inarr=[1,2,2,3,2]
var inarr1=inarr.indexOf(2)
console.log(inarr1) //1
四、数组反转–reverse()
var inarr=[1,2,2,3,2]
var inarr2=inarr.reverse()
console.log(inarr2) //[2, 3, 2, 2, 1]
五、数组排序–sort()
此排序是按照Unicode编码排序
六、数组连接concat()–不可修改原数组
(结果是数组)
var aa=[1,2]
var bb=[2,3]
var cc=aa.concat(aa,bb)
console.log(cc)//[1, 2, 1, 2, 2, 3]
七、数组以什么连接join()–不可修改原数组
(结果是字符串)
var strarr=aa.join("-")
console.log(strarr) //1-2
八、map()–对数组进行处理,返回一个全新的数组
(return不可或缺)
var maparr=[1,2,3,4,5,6];
var marr=maparr.map(function(item,index,maparr){
return "星期"+item //新数组的分一项
})
console.log(marr) //['星期1', '星期2', '星期3', '星期4', '星期5', '星期6']
九、filter()–过滤数组,返回一个全新的数组
var filterarr=maparr.filter(function(item,index){
return item%2==1
})
console.log(filterarr) //[1, 3, 5]
十、some()–检测数组是否满足指定条件,直接返回布尔值,用法与filter相同
var arr=[1,2,3,4,5];
var a=arr.some(function(){
return item>5;
})
console.log(a)//有就返回true(一次)
十一、forEach()–对数组的元素做事,针对的是对数组的每一项做事情
var arr=[1,2,3];
var sum=0;
arr.forEach(function(item,index){
sum+=item;
})
十二、排序问题
1.冒泡排序
var pupu=[4,3,5,2,7,1,6]
for(var i=0;i<pupu.length-1;i++){
for(var j=0;j<pupu.length-1-i;j++){
var qqarr=[];
if(pupu[j]>pupu[j+1]){
qqarr=pupu[j];
pupu[j]=pupu[j+1];
pupu[j+1]=qqarr
}
}
}
console.log(pupu) //[1, 2, 3, 4, 5, 6, 7]
2.利用sort
var pupu=[4,3,5,2,7,1,6]
pupu.sort(function(a,b){
return a-b; //升序
})
十三、数组去重
1.for循环
var repeated=[1,0,9,1,3,3,1];
for(var i=0;i<repeated.length-1;i++){
for(var j=i+1;j<repeated.length;j++){
if(repeated[i]==repeated[j]){
repeated.splice(j,1)
j--
}
}
}
console.log(repeated) //[1, 0, 9, 3]
2.利用查找角标indexOf
var repeated=[1,0,9,1,3,3,1];
var narr=[];
for(var i=0;i<arr.length;i++){
if(narr.indexOf(repeated[i])==-1){
narr.push(repeated[i])
}