2020.0429--数组

1:什么是数组
数据的组合,一组数据
当需要操作多个数据时,可以给数据打包,叫做数组
数组其实也是对象,只是储存数据的形式不一样,但是类型一样
2:如何得到数组
字面量:var r1 = [];
构造函数:var r2 = new Array();
区别:当字面量内只有一个数值型数据时,表示一个数据。
当构造函数内只有一个数值型数据时,表示长度
注意区别,按需选择
3:数组的操作
索引(编号、序号:从0开始)
Var arr = [“asd”,”qwe”,3,2,8];
数组是一个有序数据的集合 ,有序的序号叫索引,从0开始,根据长度得出到length-1结束。
数组的第一个:数组[0]
数组的最后一个:数组[length-1]
**(1)增:**增加数组的长度,给不存在的位置赋值:
Arr[arr.length] = “lalal”;
**(2)删:**缩短数组的长度:arr.length=3;(比如原来的长度是5)
**(3)改:**找到对应索引的数据,赋值:
Arr[要修改数据的索引] = “asd”;
(4)查: 根据索引直接获取:arr[指定位置的索引]
4;数组的小分类
对象数组:里面都是对象
字符数组:都是字符
对象数组(json数组):都是对象
数组数组(二维数组):都是数组
如何使用:逐层解析
如:json数组:
var objArr = [{name:“admin”},{name:“root”},{name:“liyang”}];
// 指定数据
console.log(objArr[1].name); // root
// 所有数据
for(var i=0;i<objArr.length;i++){
console.log(objArr[i].name);
}

二维数组:
var twoArr = [[3,5,6,7,4],[“a”,true,“b”],[“hello”,“world”]];
// 指定数据
// console.log(twoArr[2][0]);
// 所有数据
for(var i=0;i<twoArr.length;i++){
// console.log(twoArr[i])
for(var j=0;j<twoArr[i].length;j++){
console.log(twoArr[i][j]);
}
}

5:数组的排序
冒泡排序
// 简单的排序
var arr = [9,8,7,6,5];
console.log(arr);
// 不用sort
// 自己写
// 升序
// 接下来我表示的是索引(下标)
// 0-1,1-2,2-3,3-4
// [8,7,6,5,9]
// // 比完之后,排了什么,排了最后一个必然是最大值
// 0-1,1-2,2-3
// [7,6,5,8,9]
// // 比完之后,排了什么,排了倒数第二个必然是倒数第二大的值
// 0-1,1-2
// [6,5,7,8,9]
// // 比完之后,排了什么,排了倒数第三个必然是倒数第三大的值
// 0-1
// [5,6,7,8,9]
// // 比完之后,排了什么,排了倒数第四个必然是倒数第四大的值

// 以下结构是比较次数和哪些索引进行比较
// 0-1,1-2,2-3,3-4
// 0-1,1-2,2-3
// 0-1,1-2
// 0-1

// 多行多列
// 循环的嵌套
// 外层循环控制行
// 内层循环控制列

for(var i=0;i<arr.length-1;i++){
    for(var j=0; j<arr.length-1-i; j++){
        if(arr[j] > arr[j+1]){
            var ls = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = ls;
        }
    }
}

// 两两比较,大的放后面:冒泡排序

console.log(arr);

选择排序
var arr = [9,8,5,6,7];
console.log(arr);

// // 思路:拿第一位和后面所有作比较,找到最小的,放在第一位
// 0-1,0-2,0-3,0-4
// [5,8,9,6,7]
// // 第一轮结束后,第一个位置必然是最小的

// // 思路:拿第二位和后面所有作比较,找到最小的,放在第二位
// 1-2,1-3,1-4
// [5,6,9,8,7]
// // 第二轮结束后,第二个位置必然是第二小的

// // 思路:拿第三位和后面所有作比较,找到最小的,放在第三位
// 2-3,2-4
// [5,6,7,8,9]
// // 第三轮结束后,第三个位置必然是第三小的

// // 思路:拿第四位和后面所有作比较,找到最小的,放在第四位
// 3-4
// [5,6,7,8,9]
// // 第四轮结束后,第四个位置必然是第四小的

// 一共有5个数据,确定了前四个,最后一个不需要比了

// 以下结构是:比较次数和哪些索引在比较
// 0-1,0-2,0-3,0-4
// 1-2,1-3,1-4
// 2-3,2-4
// 3-4

for(var i=0;i<arr.length-1;i++){
    // 为了能不断的使用第一位和后面的作比较,在能拿到第一个数据的时候,存到一个ls变量中
    // 将来使用这个ls变量作比较,就不影响真正的第一位的数据了
    // 因为每一行第一个索引都在变,所以,要将这个ls变量,放在第一个循环的内部
    var ls = arr[i];
    // ls保存了数组中某个数据,lsIndex保存这个数据的索引
    var lsIndex = i;

    for(var j=i+1;j<arr.length;j++){
        if(ls > arr[j]){
            // ls里面的数据如果大了,换成小的
            // 因为在找最小的
            ls = arr[j];
            // 如果ls里面的数据换了,lsIndex也跟着换
            lsIndex = j;
        }
    }
    // ls必然已经是最小的了
    // 交换数组中的数据
    
    // 先把真正的第一位拿走,否则会被覆盖
    // 放到真正的最小值的位置
    arr[lsIndex] = arr[i];
    // 再把ls变量中,最小的值,放在第一位
    arr[i] = ls;
}

// 按照从左到右的顺序,依次取出每个数据,后后面所有数据做比较,找到最小值,交换
// 选择排序

console.log(arr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值