数组
数组是JavaScript中一种复杂数据类型,可以在一个变量中存储多个有顺序的数据
数组的创建
1. 字面量创建数组
var arr = [1,2,3,4,5]
数组索引 0 1 2 3 4
2.标准方式创建数组
var arr = new Array(1,2,3,4,5)
数组的操作
1.数组的拷贝
数组的拷贝分为浅拷贝和深拷贝
浅拷贝:将原先数组进行复制,本质上是将原数组的地址复制给新数组,任何一个数组的操作都回影响到两个数组
深拷贝:将原先数组的值添加到新数组中,两个数组的操作互不影响
浅拷贝
var arr = [1,2,3,4,5]
var arr2 = arr;
console.log(arr,arr2) //[1,2,3,4] [1,2,3,4]
arr[2] = 5;
arr2[0] = 0;
console.log(arr,arr2) //[0,2,5,4,5] [0,2,5,4,5]
深拷贝
var arr = [1,2,3,4,5]
var arr2 = []
for(var i = 0;i<arr.length;i++) {
arr2[i] = arr[i]
}
console.log(arr,arr2) //[1,2,3,4] [1,2,3,4]
arr[2] = 5;
arr2[0] = 0;
console.log(arr,arr2) //[1,2,5,4,5] [0,2,3,4,5]
2.添加数据
arr.push(dat):数组末尾追加一个数据
var arr = [1,2,3]
arr.push(4);
console.log(arr) //[1,2,3,4]
arr.unshift(dat):数组的头部添加一个数据
var arr = [1,2,3]
arr.unshift(4);
console.log(arr) //[0,1,2,3]
3.删除数据
arr.pop():删除数组末尾的一个数据
var arr = [1,2,3]
arr.pop();
console.log(arr) //[1,2]
arr.shift():删除数据头部一个数据
var arr = [1,2,3]
arr.shift();
console.log(arr) //[2,3]
4.特殊操作
arr.splice(start,length,repalce) 删除/添加/替换数组数据
var arr = [1,2,3,4]
arr.splice(1,1)
console.log(arr) // [1,3,4]
arr.splice(1,0,5)
console.log(arr) //[1,5,3,4]
arr.splice(1,1,6)
console.log(arr) //[1,6,3,4]
5.其他操作
函数名称 | 描述 |
---|---|
arr.join(cahr) | 将数组使用指定的字符char拼接,返回一个字符串 |
arr.concat(a) | 将数组a链接到数组arr的末尾得到一个新数组,对原数组无影响 |
arr.reverse() | 翻转数组数据 |
arr.slice(start,end) | 截取数据· |
arr.indexOf(dat) | 在数组中查询数据位置,返回其对应索引 |
Array.isArray(dat) | 判断指定数据dat是否是数组 |
6.关于数组的算法(冒泡排序与选择排序)
7.数组排序
JavaScirpt中对于数组,提供了排序数组:sort(fn)
基本排序:排序普通数值数据
var arr = [1,4,5,2,3]
console.log(arr.sort());
排序JSON对象数据
var names = [{name: "zhangsan",age:18},{name:"lisi",age:20},{name:"wangwu",age:32},{name:"xuliu",age:16}]
names.sort(function(){
return a.age - b.age
})
随机排序,将给丁的一个数据打乱
var names = [{name: "zhangsan",age:18},{name:"lisi",age:20},{name:"wangwu",age:32},{name:"xuliu",age:16}]
names.sort(function(){
return Math.random() - 0.5
})
8.数组的高级函数
every(fn):对数组中所有数据进行判断,若全部为true才返回true
var arr = [2,5,6,4,7]
var arr_every = arr.every(function(value,index){
return value < 6
})
some(fn):对数组中所有数据进行判断,若有一个数据为true,则返回true
var arr = [2,5,6,4,7]
var arr_some = arr.some(function(value,index){
return value < 6
})
filter(fn):数组中的数据按照指定条件进行筛选,返回筛选后的数组
var arr = [2,5,6,4,7]
var arr_filter = arr.filter(function(value,index){
return value < 6
})
map(fn):数组中的所有数据按照指定的算法进行运算,得到运算后的数组
var arr = [2,5,6,4,7]
var arr_map = arr.map(function(value,index){
return value * 2
})
forEach(fn):数组提供的一种遍历函数
var arr = [2,5,6,4,7]
var arr_forEach = arr.forEach(function(value,index){
console.log(value)
})