Es5新增的数组方法;
1.map():
语法:
arr.map(function(item,i){
reyurn item*3;
})
含义: 遍历数组,item代表的是每一个元素,i代表下标
返回值:映射出来的新数组
2.forEach():
语法:
arr.forEach(function(item){
//没有return
})
含义:遍历数组
返回值:无
3.filter():
语法:
arr.filter(function(item,index){
return item>8
})
含义:过滤满足条件的元素
返回值:数组形式的大于8的元素
4.some():
语法:
arr.some(function(item,index){
return item>8
})
含义:数组中有一个满足条件的,返回值就是true都不满足才会返回false
返回值:true或者false
5.every():
语法:
arr.every(function(item,index){
return ittem>8
})
含义:数组中必须 每一个都大于8,返回的是true,有一个不大于8的就返回false
返回值:true或者false
数组排序:选择排序/冒泡排序
选择排序:
排序思路:假设第一个元素是最小值,拿第一个元素和后面的所有元素进行对比,如果发现有比第一个元素还小的,就进行交换。
arr[0] 和 arr[1] [8,12,5,3]
arr[0] 和 arr[2] [5,12,8,3]
arr[0] 和 arr[3] [3,12,8,5]
// 经过一轮比较,最小跑前面了
// 第一轮比较完毕,第一个元素已经确定最小啦
arr[1] 和 arr[2] [3,8,12,5]
arr[1] 和 arr[3] [3,5,12,8]
//
arr[2]和arr[3] [3,5,8,12]
====================================
// 简化成for循环嵌套
// 由于上述循环判断了3次,总共有4个元素,所有-1
for (var i = 0; i < arr.length - 1; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
冒泡排序:
排序思路:相邻两个元素进行比较,大的数字往后排
第一轮
arr[0]和arr[1] [8,12,5,1]
arr[1]和arr[2] [8,5,12,1]
arr[2]和arr[3] [8,5,1,12]
// 比完一轮,最大的跑最后了
// 第二轮:
arr[0] 和arr[1] [5,8,1,12]
arr[1]和arr[2] [5,1,8,12]
// 第二轮,最大的两个跑后面了
// 第三轮
arr[0]和arr[1] [1,5,8,12]
===============================
// 这个-1的目的是,4个元素,排够3次就够了
for (var j = 0; j < arr.length - 1; j++) {
// -j的目的是 减少排序的次数,由于最大的元素已经排到了最后了,就不需要再排了
for (var i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
console.log(arr);
基本数据类型和引用数据类型
基本数据类型:
number,string,boolean,undefined,null
1.基本数据类型变量存的是值
2. 基本数据类的变量存储在栈内存
3. 基本数据类型的变量和变量互不影响
var a = 10;
引用数据类型:
引用数据类型: obejct , array
通过tyepof检测引用数据类型的结果都是object
1.引用数据类型的变量存储的是地址值
2. 基本数据类的变量存储在堆内存
3. 引用数据类型的变量如果和另外一个引用数据类型的变量公用一个地址,
其中一个变化,另外一个也会受到影响
var arr = [12,43,12]