数组:数组是一系列有序数据的集合
数组数据类型Array:
基本数据类型: number / string / boolean / undefined / null
复杂数据类型: Object / Function / Array / ...
字面量创建一个数组:var arr =[ ]
内置构造函数创建数组 :var arr = new Array ()
数组的长度:length(几个内容长度就是几)
数组的索引
- 索引,也叫做下标,是指一个数据在数组里面排在第几个的位置
- 注意: 在所有的语言里面,索引都是从 0 开始的
- 在 js 里面也一样,数组的索引从 0 开始
数组遍历
- 我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加
- for(i=0;i<arr.length;i++){ console.log(arr[i])}
.ES5常用数组遍历方法:
1,forEach: 语法:arr.forEach(function (item, index, arr) {})
item==数组中的每一项 index==数据索引(下标)arr==原始数组 (一般不用)
2,map :和forEach一样,只对数组中的每一项进行操作,返回一个新的数组
var newArr = arr.map(function(item,index){ return 新元素 })
3,filter : var newArr = arr.filter(function(item,index){ return 条件})
查找数组满足条件的元素,返回新数组
4,find 查找第一个满足条件的元素(满足条件返回后退出)
5,every 遍历数组,查找数组元素是否全部满足条件,全部满足返回真
6,some 遍历数组,查找数组是否有一个满足条件,有一个满足条件返回真
7,数组遍历reduce方法: 一般应用累加求和
arr.reduce(function(previousValue,currentValue,currentIndex,arr){
previousValue 上一个值,如果initValue存在,第一遍历时previousValue就是initValue
currentValue 当前数组元素
currentIndex 当前数组下标
arr 原数组
数组的常用方法:
push 是用来在数组的末尾追加一个元素
pop 是用来删除数组末尾的一个元素
unshift 是在数组的最前面添加一个元素
shift 是删除数组最前面的一个元素
splice 是截取数组中的某些内容,按照数组的索引来截取
reverse 是用来反转数组使用的
sort 是用来给数组排序的
concat 是把多个数组进行拼接
join 是把数组里面的每一项内容链接起来,变成一个字符串
indexOf 用来找到数组中某-项的索引
includes;检测数组(arr)是否包含某一内容
冒泡排序:
比较相邻的元素:如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
var arr = [89, 98, 78, 68, 76]
// 外层循环冒泡轮数
for (var j = 0; j < arr.length - 1; j++) {
//内层循环,两两比较交换位置
for (var i = 0; i < arr.length - 1 - j; i++) {
//1.相邻两个数,两两比较
if (arr[i] > arr[i + 1]) {
// 2.交换位置
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
console.log(arr)
}
console.log('排序后 :', arr)
选择排序:选择排序思想
1. n 个数 进行n-1次选择
2. 每次选择
未排序数中找最小数下标,与前面的数交换位置
数组去重
[9,2,5,2,8,2,5] -> [9,2,5,8]
方法一: 利用indexOf或includes实现
思路:
1. 定义一个空数组 [] 存储去重后元素
2. 遍历原数组
3. 判断新数组中是否有原数组当前元素,如果没有,存储到新数组中
方法二: 利用双重for循环+splice实现
外层循环遍历数组所有元素
内层循环依次判断后面元素是否与外层循环元素相同,如果相同,截取掉