数据结构之数组篇(数组的基本使用)
什么是数组?
Array 对象用于在单个的变量中存储多个值。
数组对象的作用是:使用单独的变量名来存储一系列的值。
创建和初始化数组
let arr = new Array() //声明并初始化一个数组 不推荐
let arr = [] // 推荐这种方式声明数组
Array常用方法
shift:删除数组第一个元素并返回
var arr = [];
arr[0] = "zhansang"
arr[1] = "lisi"
arr[2] = "wangwu"
alert(arr.shift()) // zhansang
alert(arr) // lisi,wangwu
pop:删除数组返回最后一个元素
var arr = [];
arr[0] = "zhansang"
arr[1] = "lisi"
arr[2] = "wangwu"
alert(arr.pop()) // wangwu
alert(arr) //zhansang,lisi
join:用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
var arr = [];
arr[0] = "zhansang"
arr[1] = "lisi"
arr[2] = "wangwu"
alert(arr.join()) // zhansang,lisi,wangwu
reverse :反转数组
let a = [1,2,3]
alert(a.reverse()) //[3,2,1]
push :向数组的末尾添加一个或更多元素,并返回新的长度
let a = [1,2,3]
alert(a.push(4))
isArray:判断对象是否为数组 返回值是true/false
function myFunction() {
var a = [1,2,3,4,5];
alert(Array.isArray(a);) //返回true
}
此方案的问题在于 ECMAScript 5 不支持老的浏览器。
function isArray(x) {
return x.constructor.toString().indexOf("Array") > -1;
}
concat:拼接一个或多个数组 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
let a = [1,2,3]
let b = [4,5]
alert(a.concat(b)) // [1,2,3,4,5]
slice:数组的截取 并返回选定的元素(并不会更改原数组,只会返回一个子数组)
用法: arr.slice(start,end)
1. 从start开始截取到end但是不包括end
2. 返回值为截取出来的元素的集合
3. 使用负值从数组的尾部选取元素。
4. 如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
var arr1 = [1,44,56,12,78,99,8,];
var arr2 = arr1.slice(2,4) //从index为2截取到index为4之前不包括4
console.log(arr2); //[56,12]
console.log(arr1); //[1, 44, 56, 12, 78, 99, 8] 原数组没有发生改变
sort:对数组元素的排序(作用原数组)
注意:如果使用该方法没有传递参数 那么默认是将字母顺序进行排序
var arr = ["Zhansan", "Leili", "Sili", "Wangwu","Songliu", "Hanqi"]
console.log(arr.sort()) //["Hanqi", "Leili", "Sili", "Songliu", "Wangwu", "Zhansan"]
传递参数的排序方式
<script>
//从小到大
function positive(a,b){
return a - b
}
//从大到小
function invertedr(a,b){
return b - a
}
倒序
var arr =[12,5,788,55,46,23,78,15,26]
console.log(arr.sort(positive)) // [5, 12, 15, 23, 26, 46, 55, 78, 788]
console.log(arr.sort(invertedr)) //[788, 78, 55, 46, 26, 23, 15, 12, 5]
</script>
splice :添加/删除项目 返回被删除的项目(作用于原数组)
语法:array.splice(index,howmany,item1....item)
1. splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组
function add(arr,index,howmany,item) {
return arr.splice(index,howmany,item)
}
var arr =[12,5,788,55,46,23,78,15,26]
add(arr,2,0,"William") //添加
console.log(arr) //[12, 5, "William", 788, 55, 46, 23, 78, 15, 26]
// add(arr,2,1,"William") //替换
// console.log(arr)
删除
var arr3 = [1,2,3,4,5,6,7];
var arr4 = arr3.splice(2,3)
console.log(arr4); //[3,4,5];
console.log(arr3); //[1,2,6,7,"f1","f2"];