1、数组创建方式
- 1、字面量
var arr = [];
- 2、内置构造函数
var arr1 = new Array( )
数组:有序的数据类型,里面可以放任何数据类型;length 数组的长度
创建方式的区别
var arr = [1,2,3,4,"a",false]
var arr1 = new Array(10)
如果只传了一个参数,那就是数组的lengthvar arr1 = new Array(1."as",5,45)
如果传了两个及以上的数据,那就是数组里面的数据
2、操作数组的数据(增删改查)
- 增
arr[0] = "hello"
arr[1] = "ni"
- 改
arr[1] = fine
- 删
arr.length = 0
删除数组
3、简单操作数组的方法
1、删除数组的最后一项
语法:数组.pop()
- 返回值:被删除的那一条数据 直接改变原数组
2、往数组的末尾添加一项
语法:数组.push()
- 返回值:改变后的数组长度 直接改变原数组
3、删除数组的第一项
语法:数组.shift
- 返回值:被删除的那一条数据 直接改变原数组
4、再数组的最前面添加一条数据
语法:数组.unshift
- 返回值:改变后的数组长度 直接改变原数组
5、数组的切割
语法:数组.splice( )
- 如果只有一个参数,代表开始截取的位置,会从这个位置截取到最后
- 如果两个参数,第一个参数代表截取的初始位置,第二个是截取的个数
- 如果三个参数,第一个参数代表截取的初始位置,第二个是截取的个数,第三个是替换到截取位置的数据
- 返回值:截取的数据组成的一个新的数组 会改变原数组
6、indexOF( ) 查询数组里面有没有某一个数据
语法:数组.indexOf( )
参数:要查询的数据- 返回值:如果有这个数据就返回这个数据的下标(索引), 如果没有就返回 -1 不改变原数组
7、concat( ) 拼接数据
var arr = ["ak",5,6]
var arr1 = [1,2,3,4]
var res = arr.concat(arr1)
console.log(res)
console.log(arr)
语法:arr.concat(要拼接得数据或者数组)
- 返回值:拼接好数据的新的数组 不会改变原数组
8、join( ) 以某种符号把数组里面得数据连接成为一个字符串
语法:数组.join( )
参数可以是任意字符串,如果没有参数,默认以 " , " 连接- 返回值:连接好的字符串 不会改变原数组
9、reverse( ) 反转数组
语法:数组.reverse( )
- 返回值:就是改变后的数组 会改变原数组
10、sort( ) 数组排序
语法:数组.sort( )
参数接收的是一个function 这个function有两个参数
return a - b
从小到大
return b - a
从大到小- 返回值:就是改变后的数组 会改变原数组
var arr = [5,2,6,4,1,,78,46]
var res = arr.sort(function(a,b){
return a - b
})
console.log(res)
引用数据类型在内存当中的存储情况
- 引用数据类型:object arr function 。。。
- 内存分布为栈内存 和 堆内存
- 基本的数据类型存储在栈内存里面,引用数据类型在栈内存里面存储的是空间地址
两种常见的排序方法
- 冒泡排序
//两个相邻的进行比较,如果前面那个比后面那个大,就交换他们的位置
var arr = [5,2,6,4,1,,78,46]
for(var i = 0 ; i < arr.length ; i++){
for(var j = 0 ; j < arr.length - 1 - i ; j++){
if(arr[j] > arr[j + 1]){
var temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
- 选择排序
//先默认第0项就是最小的,然后进行遍历数组里面的每一个数据,只要有比我小的,我就记录下你的索引
var arr = [5,2,6,4,1,,78,46]
for(var i = 0 ; i < arr.length ; i++){
var minIndex = i
for(var j = i + 1 ; j < arr.length ; j++){
if(arr[j] < arr[minIndex]){
minIndex = j
}
}
if(i !== minIndex){
var temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
}
}
console.log(arr)
for in 循环遍历
- 一般用来遍历对象
var obj = {
name:"Bob",
age:48,
hobby:"play"
}
for(var key in obj){
console.log(obj[key]) //输出的值是属性
}
遍历数组
var arr = ["小红","小黑","小白","小明"]
for(var key in arr){
console.log(key)//0,1,2,3 输出的值是数组的下标
}
11、ES5新增的操作数组的方法
- every
- some
- forEach
- filter
- indexOf
- lastIndexOf
- isArray
- map
- reduce
- reduceRight
12、不改变原数组的方法
indexOf( ) concat( ) join( ) map( ) filter( ) some( ) every( ) slice( ) reduce( ) find( )
forEach( ) 有时会改变原数组,有时不会改变原数组