一、创建数组
var arr = new Array()
Array中给一个值表示数组长度
给多个值时,代表数组的每个值,数组长度为值的个数
var arr = []
当定义同名的数组时,后面的数组会覆盖前面的数组。
二、数组概念
数组是内存中多个小容器的集合,每个小容器都有一个序号,叫做下标,第一个从0开始
数组可以存放多种数据类型的值,number,string,对象,数组,函数等。
数组里存放数组就是多维数组
三、遍历数组以及一些简单操作
1.增:数组[下标] = 数据,下标大于数组的最大下标就是添加
2.改:数组[下标] = 数据 ,下标等于要修改的元素的下标就是修改该元素
3.删:数组.length = 0
4.查:数组[下标]
数组遍历使用for(var i=0;i<数组.length;i++){}
for in也可以遍历数组但不建议,在数组没有内容需要循环遍历输入内容的时候,值是undefined,for in不会执行循环体,并且为null的情况,for in也不会执行循环体
for in多用于对象的遍历
四、注意点:
当一个数组赋值给另一个变量时,另一个变量对数组的修改也会修改原数组,这个数组就相当于一个门,而那两个变量名相当于这个门的两把钥匙,他们都能打开这个数组,改变数组的状态。
<script>
var arr1 = [1,2,3]
var arr2 = arr1;
arr2[0] = 4;
console.log(arr1);
console.log(arr2);
</script>
五、数组的一些操作方法
总结分为两类(改变原数组,不改变原数组)
会改变原数组:
- 数组.shift()删除数组第一个元素
- 数组.pop()删除数组最后一个元素
- 数组.unshift(值)在数组首位添加一个值
- 数组.push(值)在数组末尾添加一个值
- 数组.splice(值一,值二,...)
- 值一(下标值),从第几个值开始(包括那个值)
- 值二,删除几个元素
- 再往后的值表示添加进数组的元素值,添加在值一选中的元素前面
- 数组.reverse()翻转数组
- 数组.sort()数组排序,默认从小到大,只能判断每个元素的第一位数,适用与10以下的数
- 多位数时,数组.sort(function(a,b){return a-b})
- a-b>0时,b在前a在后
- a-b<0时,a在前b在后
- a-b=0时,ab位置保持不变
不改变原数组生成一个新数组或值,需要定义一个变量来接收:
- 数组.concat()拼接数组
- 数组.join("字符串")把数组拼接成字符串,join中写的是自定义连接各元素的符号
- 数组.slice(开始下标,结束下标)截取数组,截取下来的数组包括开始元素,不包括结束元素
- 数组.indexOf(某个元素值)查找数组的某个值的下标,当有重复值时,返回的是第一次找到的元素下标,从前往后找,lasrIndexOf()是找到最后一次出现该值的元素的下标,未找到返回-1
- 数组.every(function(value){return value>0})判断每个值是否满足条件,返回true或false
- 数组.some(function(value){return value>0})判断是否有一个或多个满足条件,返回true或false
- 数组.filter(function(value){return value>0})把满足条件的元素组成一个新数组
- 数组.map(function(value){value += 1;return value;})对数组每一个元素进行处理并返回
- 数组.reduce(function(prev,next){return prev+next},init)用于数组的叠加
- prev是函数的返回值,初始返回值为init定义的值,init未定义时初始值是数组下标为0的元素
- next是数组下标为0开始往后遍历,当init未定义时next是从下标为1的元素开始
- init用于给prev定义一个初始值
六、数组排序
1.冒泡排序:将相邻两个元素进行比较并交换位置,具体原理代码如下
<script>
var arr = [1,5,2,7,4,2]
//循环的次数
for(i=0;i<arr.length-1;i++){
//每次循环两两比较的次数
for(j=0;j<arr.length-i-1;j++){
var arr2 = null;
if(arr[j]>arr[j+1]){
arr2 = arr[j];
arr[j] = arr[j+1];
arr[j+1] = arr2
}
}
}
console.log(arr);
</script>
2.选择排序:以从小到大举例,将第一个数与后面的依次比较,遇到比自己小的元素就和他交换位置,再用交换后的数往后比较,直到第一个数就是最小的数,再从第二个数开始往后比较做重复操作。具体代码如下
<script>
var arr = [4,2,6,1,5]
for(i=0;i<arr.length-1;i++){
for(j=i+1;j<arr.length;j++){
var arr2 = null;
if(arr[i]>arr[j]){
arr2 = arr[i];
arr[i] = arr[j];
arr[j] = arr2;
}
}
}
console.log(arr)
</script>