JS基础 -- 大复习(阶段四:数组)

数组

1. 概念 :  什么是数组?

数据的有序集合,可以用来存储多个数据

2.创建的两种方式

2.1.构造函数方式:var arr = new Array()

var arr = new Array();  //创建了一个空的数组
console.log(arr);      // [ ]

 2.字面量--------------常用

//1.使用数组字面量方式创建空的数组

var 数组名= [ ] ;

//2. 使用数组字面量方式创建带初始值的数组

var 数组名= ['小白', '小黑','大黄'];

//3.数组中的成员(元素)可以是任意的数据类型 列如字符串, 数字, 布尔值

var arr = [1,'string',true,undefined,null,[],{},function( ){ }]
 

3. 获取数组中的元素

3.1 数组的索引号 (下标)

 3.2获取数组元素

var arr = ['胖虎','静香','大雄'] 
console.log(arr[2])   //'大雄'

提示:如果没有这个数组元素,输出的结果是 undefined

3.3数组的长度

数组名.length

4.遍历数组

var arr = ['胖虎','静香','大雄']
for(var i=0; i< arr.length; i++){
    console.log(arr[i])
}

// 扩展
arr.forEach(function(value,index){
    console.log(value,index);
})

案例

//1.求数组中的最大值
var arr = [1,2,3,9,5,7]
var max = arr[0];

//因为max=arr[0],已经取走了索引号0,所以i从索引号1开始循环

for(var i=1; i<arr.length; i++){
    if(arr[i] > max){
        max = arr[i]
    }
}
console.log(max)

思路:

 

 //数组中存放10个整数(1~10)
var arr = [ ]
for(var i = 1; i <= 10; i++){
    arr[i-1] = i
}
console.log(arr)

//数组筛选 将大于5的值筛选出来
//方案1
    var arr = [1,2,5,3,4,6,9] 
    var newArr = []
    var j = 0 //j的作用相当于一个计数器
    for(var i = 0; i<arr.length; i++){
        if(arr[i] >= 5){
            newArr[j] = arr[i]
            j++
        }
    }
    console.log(newArr)

//方案2
    var arr = [1,2,5,3,4,6,9] 
    var newArr = []
    //利用了newArr.length的长度是动态的特性
    for(var i = 0; i<arr.length; i++){
        if(arr[i] >= 5){
            newArr[newArr.length] = arr[i]
        }
    }
    console.log(newArr)

// 求数组中出现次数最多的元素及它的次数
var arr = [1,2,3,'a',"b",2,"c","a","d","a"]


//数组的反转
//方案1

var arr = ['胖虎','静香','大雄','小夫'] 
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    newArr[arr.length - i - 1] = arr[i]
}
console.log(newArr);

//方案2
var arr = ['胖虎','静香','大雄','小夫'] 
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
    newArr[newArr.length] = arr[i]
}
console.log(newArr);


//数组的冒泡排序从小到大
var arr = [9, 2, 17, 8, 5, 3]   // =>[2,3,5,8,9,17]

for (var j = 0; j < arr.length - 1; 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
        }
    }
}

思路"把数组里面的数据进行1排序从小到大或者从大到小,进行排序

一次比较两个元素,如果他们的顺序错误就把他们交换过来,经过多次交换达到顺序

第一步;外层for循环管的的是趟数,有五个数据但是只用走四趟,所以i<=arr.length-1;这样就达到了四趟的要求

第二部; 里层fou循环管的事次数,里面有五个数据,同样的要走四次,所以j<=arr.length-i-1就相当于:5-0-1=4; 5 是 五个数据 ,0是从索引号相当于i,代表第一个数据 -1是代表减去自身所在的位置 ,5-0-1=4.所以这就是交换的次数

第三部 ;内部交换两个变量的值.前一个和后面一个数组元素进行比较,所以 arr[j]是第一个数据索引号为0 ,arr[j+1]是第一个数据加一,那就是第二个索引号,两个进行比较,大于就进行交换,

第四步交换:声明一个空的变量,将第一个数据交给新的变量,然后再把第二个交给第一个,再把新的变量交给第二个数据,这样就达到了交换的结果了

数组中  数组翻转 和 冒泡排序比较重要,重要的是理解其中循环交替的算法,

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值