目录
将一列数98,78,86,59,94,100进行升序排序用sort
1.数据类型之间存储的区别
1.我们的存储空间分为两种
1.栈:主要存储基本数据类型的内容
2.堆:主要存储复杂数据类型的内容
2.数据类型之间的比较
1.基本数据类型是值之间的比较
2.复杂数据类型是地址之间的比较
2.函数参数传递
在函数参数传递时,如果形参传的类型是对象,则相当于赋值,把对象存储的那个地址复制了一份给另外一个对象。无论修改哪个对象,它们的地址是一样的,所以做任何操作后,值都一样。
3.数组的常用方法
1.push
概念: 是用来在数组的末尾追加一个元素
语法:
arr.push(m) //m为一个数
2.pop
概念:是用来删除数组末尾的一个元素
语法:
arr.pop()//弹出
3.unshift
概念:是在数组的最前面添加一个元素
语法:
arr.unshift()
4.shift
概念:删除数组最前面的一个元素
语法:
arr.shift()
5.splice
概念:是截取数组中的某些内容,按照数组索引来截取
语法:
splice(下标,元素个数)
splice(下标,元素个数,代替内容)
6.reverse
概念:是用来反转数组使用的
语法:
arr.reverse()
7.sort
概念: 是用来给数组排序的
语法:
arr.sort() //由高到低,排序规则是先转为字符串,使用Unicode编码
转换排序方式为升序的解决方法【非Unicode编码的大小的比较】
arr.sort(function(a,b){//升序
if(a<b)
{return -1}
if(a==b)
{return 0}
if(a>b)
{return 1}
})
8.concat
概念:是把多个数组进行拼接
语法:
var newArr=arr.concat([4,5,6])
//或者
var newArr=arr.concat(arr1)
9.join
概念:是把数组里面的每一项内容连接起来,变成一个字符串
语法:
var newArr=arr.join('') //得到的是一个字符串
10.indexOf
概念:用来找到数组中某一项的索引
语法:
var arr=[1,2,3,4]
arr.indexOf(3)===>2
11.includes
概念:判断是否包含某一内容,返回Boolean类型的值
语法:
var arr=[1,2,3,4,5]
var flag=arr.includes(2)===>true
12.slice
概念: 获取数组里一定范围的项返回新数组
语法:
var arr[1,2,3,4,5,5]
arr.slice(begin,end)//左闭右开为索引号的范围
arr.slice(0,4)==>1,2,3,4
4.ES5常用的数组遍历的方法
匿名函数:function(){}
1.forEach
概念:和for循环一个作业,就是用来遍历数组的
语法:
arr.forEach(function(item,index,arr){})//会根据数组长度执行
2.map
概念:和forEach类似,只不过可以对数组中的每一项进行一个操作,返回一个新数组
语法:
var newArr=arr.mamp(function(item,index,arr){
return item--->可对其加减乘除
})
3.filter
概念:和map的使用方式类似,按照我们的条件来筛选数组
把原始数组中满足条件的筛选出来,组成一个新的数组返回
语法:
var newArr=arr.filter(function(item,index,arr){
return item>1 //筛选arr中大于1的数据返回给newArr
})
4.find
概念:遍历数组返回数组中第一个满足条件的项
语法:
var newArr = arr.find(function(item,index,arr){
return item>1
})
5.every
概念:数组中是否每一个元素都满足指定的条件,全部满足返回true
语法:
var arr=[2,3,4,5]
var flag= arr.find(function(item,index,arr){
return item>1
})
flag==>true
6.some
概念:数组中是否有元素满足指定的条件,只要有一个满足就返回true
语法:
var arr=[-1,-2,0,2,3,4,5]
var flag= arr.find(function(item,index,arr){
return item>1
})
flag==>true
7.reduce
概念:接收一个方法作为累加器,数组中的每个数开始合并为最终值
语法:
var sum=arr.reduce(function(previousValue,currentValue,currentInxde,arr){
return previousValue+item
},[initValue])
//无初始化值时,previousValue为第一项,后面为返回的值
//有初始化值时,previousValue为初始化值,后面为返回值
5.排序
概念:
就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组
排序的方式:
冒泡排序和选择排序
1.冒泡排序:
基本思想: 比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对响铃元素作同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
核心算法:
for(var i=0;i<arr.length-1;i++)
{
for(var j=0;j<n-i-1;j++){
if(a[j]>a[j+1])
{
var temp=a[j]
a[j]=a[j+1]
a[j+1]=a[j]
}
}
}
案例:
将一列数98,78,86,59,94,100进行升序排序用sort
var arr2=[98,78,86,59,94,100]
//方法一:
arr2.sort(function fun(a,b){
if(a<b)
{
return -1
}
if(a==b)
{
return 0
}
if(a>b)
{
return 1
}
})
console.log(arr2)
//方法二:
arr2.sort(function fun(a,b){
return a-b
})
console.log(arr2)