了解数组前,我们先来了解一下数据之间存储的区别。
数据的存储空间分为两种,栈和堆。
栈主要存储基本数据类型的内容。
堆主要存储复杂数据类型的内容。
(不知道什么的基本数据类型什么是复杂数据类型的可以看一下前面几篇文章)
数据类型之间的比较
基本数据类型是值之间的比较
复杂数据类型是地址之间的比
基本数据类型和复杂数据类型的区别
因为复杂数据类型,变量存储的是地址,真是内容在堆空间内存储。所以赋值的时候相当于把obj的那个地址复制了一份给到了obj2变量。现在obj和obj2两个变量存储的地址是一样的,指向一个内存空间。所以使用obj2这个变量修改空间内的内容,obj指向的空间也会跟着改变了。
案例:
数组常用到的一些方法
push是用来在数组的末尾追加元素(可以追加多个,用逗号隔开)
pop是用来删除数组最后的一个元素
unshift是在数组前追加元素
shift是删除数组第一个元素
splice是截取数组中的某些内容,按照数组的索引来截取
语法:splice(从哪一个索引位置开始,截取多少个,替换的新元素)
(第三个参数可以不写)
reverse是用来反转数组使用的
sort是用来给数组排序的
注意:按数组中元素的对应unicode进行排序
concat是把多个数组进行拼接
join是把数组里面的每一项内容链接起来,变成一个字符串
indexOf 获取数组中的元素所对应的下标
includes检测数组中是否包含某元素
ES5常用数组遍历方法
forEach 和for循环一个作用,就是来遍历数组的
语法:数组名.forEach(function(item,index,arr){})
forEach()的时候传递的那个函数,会根据数组的长度执行
数组的长度是多少,这个函数就会执行多少回
map 和forEach类似,只不过可以对数组中的每一项进行操作,返回一个新的数组
filter 和map的使用方式类似,按照我们的条件筛选数组
把原始的数组中满足条件的筛选出来,组成一个新的数组返回
find 遍历数组返回数组中第一个满足条件的项
every 数组中是否每个元素都满足指定的条件,全部满足返回ture
some 数组中只要有一个满足条件,返回ture
reduce 接收一个方法作为累加器,数组中的每一个值(从左到右)开始合并,最终为一个值
经典案例(冒泡排序)
基本思想:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样工作,从开始第一对到结尾最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除最后一个。持续每次对越来越少的元素重复上述的步骤,直到没有任何一对数字需要比较。
代码:
var maoPao=[10,12,43,123,45,56,67,65,40]
var cont=0
for(var i=0;i<=maoPao.length-1;i++){
for(var j=0 ; j<=maoPao.length-1-i;j++){
document.write(j,'<br>');
if(maoPao[j]>maoPao[j+1]){
cont=maoPao[j]
maoPao[j]=maoPao[j+1]
maoPao[j+1]=cont
}
}
}
document.write(maoPao,'<br>')