JavaScript的数组

45 阅读3分钟

数组

数组的概念

数组(Array)就是一组数据的集合,其中每个数据被称作元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的优雅方式

怎么创建数组

1.利用new创建数组


var 数组名=new Array()//这是一个空数组;
var 数组名=new Array(5)//这是一个长度为5的空数组//显示5[empty*5];
var 数组名=new Array(1,2,3,4)//这是一个有内容的数组;

2.利用数组字面量创建数组

var 数组名=[]

举例:

var arr=['小白',9, '老师',true]

其中数组里面的数据,例如'小白',9等称为数组元素

获取数组中的元素

数组可以通过索引来访问设置修改对应的数组元素,我们通过"数组名|[索引]"的形式来获取数组中的元素,这里访问就是获取得到的意思

数组的索引

索引(下标):用来访问数据元素的序号(数组下标从0开始)

var arr=['权志龙','泫雅','宋闵浩','loco']
console.log(arr[0]/* 结果权志龙 */)
console.log(arr[1]/* 结果泫雅 */)
console.log(arr[2]/* 结果宋闵浩 */)
console.log(arr[3]/* 结果loco */)
console.log(arr[4]/* 结果undefined,因为没有这个数组元素 */)

遍历数组

遍历:就是把数组中的每个元素从头到尾访问一次

数组长度

数组名.length

var arr=['权志龙','泫雅','宋闵浩','loco']
for(var i=0;i<arr.length;i++){
  console.log(arr[i])
}
console.log(arr.length)/* 数组长度4 */
// 1.因为我们的数组索引号从0开始,所以i必须从0开始 i<3
// 2.输出的时候arr[i],i计数器当索引号来使用
// 3.数组的长度是元素个数,不要跟索引号混淆
// 4.arr.length动态检测数组元素的个数 
// 案例一求数组[2,6,1,7,4]里面所有元素的和以及平均值
// 思路(1)声明一个求和变量和平均值变量 sum/average
// (2)遍历这个数组,把里面每个数组元素加到sum里面
// (3)求和变量sum除以数组的长度就可以得到数组的平均值
var sum=0
var average=0
var arr1=[2,6,1,7,4]
for(i=0;i<arr1length;i++>){
  sum=sum+arr1[i]/* 我们加的数数组元素arr1[i]不是计数器 */
}
average=sum/arr1.length
console.log(sum,average)/* 想要输出多个变量,用逗号分隔即可 */
// 案例二:求数组[2,6,1,77,52,25,7]中的最大值
// 思路(1)声明一个保存最大元素的变量max
// (2)默认最大值可以取数组中的第一个元素
// (3)遍历这个数组,把里面的每个数组和max相比较
// (4)如果这个数组元素大于max就把这个数组元素存到max里面,否则就继续下一轮比较
var max=2
var arr2=[2,6,1,77,52,25,7]
for(i=1,i<arr2.length;i++){
  if(arr2.length[i]>max){
     max=arr2.length[i]
  }
}
console.log('这个数组中的最大值为'+max)

数组中新增元素

1.通过修改length长度新增数组元素

var arr=[1,2,3]
console.log(arr)
arr.length=5/* 把数组的长度修改为5,里面有5个元素 */
console.log(arr[3])/* 结果undefined */
console.log(arr[4])/* 结果undefined */

2.通过新增数组元素,修改索引号

var arr1=[1,2,3]
arr1[3]=4
console.log(arr1)/* 显示1234  */
arr1[0]=9/* 这里是替换原来的数组元素 */
console.log(arr1)/* 结果显示9234 */
arr1='pink'/* 这里是替换数组 */
console.log(arr1)/* 结果为pink */
// 案例一新建一个数组,存放10个整数,(1-10)
// 思路(1)通过循环来追加数组
// (2)声明一个空数组
// (3)循环中的计数器i可作为数组元素存入
// (4)由于数组的索引号是从0开始的,因此计数器从0开始更合适,存入的数组元素要+1
var arr2=[]
for(i=0,i<10;i++){
  // arr2=i 不要这么写,直接给数组名赋值,否则会不断进行替换
  arr2[i]=i+1
}
console.log(arr2)
// 案例二筛选数组:将数组[2,0,6,1,77,0,52,25,7]中大于等于10的元素筛选出来,放入新数组中
var arr1=[]
var arr=[2,0,6,1,77,0,52,25,7]
for(i=0,i<arr.length;i++){
  if(arr[i]>=10)
  arr1[arr1.length]=arr[i]
}
console.log(arr1)

数组案例

案例一:删除指定数组元素

要求将数组[2,0,6,1,77,0,52,25,7]中0去掉组成一个新数组

var a=[]
var arr=[2,0,6,1,77,0,52,25,7]
for(i=0;i<arr.length;i++){
  if(arr[i]!==0){
     a[a.length]=arr[i]
  }
}
console.log[a]

案例二:翻转数组

要求:将数组['red','green','pink','blue']的内容反过来存放

var a=[]
var arr=['red','green','pink','blue']
for(i=arr.length-1;i>=0;i--){
  a[a.length]=arr[i]
}
console.log(a)

案例三:数组排序(冒号排序)!

冒号排序:是一种算法,把一系列的数据按照一档的顺序进行排列显示(从大到小或从小到大) 冒号排序的核心原理:一次比较两个元素,如果他们的顺序错误就把他们交换过

var arr=[5,4,3,2,1]
for(var i=0;i<=arr.length-1;i++){
  for(var j=0;j<=arr.length-i-1;j++){
     if(arr[i]>arr[j+1]){
        var temp=arr[j]
        arr[j]=arr[j+i]
        arr[j+i]=temp
     }
     
  }
}

案例四:数组排序(选择排序)!

var arr = [2, 5, 9, 4, 6, 1, 7, 3, 8]
console.log('原始数组', arr);
for (a = 0; a < arr.length; a++) {
     var min = a
     for (i = a + 1; i < arr.length; i++) {
        if (arr[min] > arr[i]) {
           min = i
        }
     }
     var temp = arr[a]
     arr[a] = arr[min]
     arr[min] = temp
}
console.log('按照从小到大排列的新数组', arr);