JavaScript--数组--遍历(for的使用)--多维数组--冒泡排序--选择排序--栈和堆--JSON

数组

数组可以保存多个值,每个值都是元素,值可以是任何数据类型
声明方式:
1.通过构造函数new声明
var arr = new Arrsy()
2. 使用[]声明
var arr = [];

//通过构造函数产生
        var  arr = new Array(11,22,33,44);
        // console.log(typeof arr);

 //使用[]声明
        var arr1 = ['言笙',18,'安徽',15000,'未'];
        // console.log(arr1);

//元素可以是任意类型,元素之间用逗号(,)隔开;
        //元素的个数,一般最多写10个;

数组的索引:

1.声明数组时,JS自动分配的,用于操作数组中的每一个元素
2.从0开始,最大的索引长度是元素长度的减(-)1;

通过下标取出第一个元素

注: 下标取出元素  数组名[索引];
例如:var arr = ['言笙',18,'女','安徽','15000'];
// console.log(arrr[0]);
        // console.log(arr[3]);

最大元素长度-1

// console.log(arr[4]);

修改数组的元素,本质是用新的元素覆盖旧的元素;

// arr[3] = '上海';
        // console.log(arr);

添加元素

索引可以不用连续

例:添加下标为8的元素
arr [8] = ‘本科’;
console.log(arr);

系统强制在中间添加空元素;

如果输出空元素,则会输出undefined;
console.log(arr[6]);//undefined

数组的长度 .length

获取数组的长度
console.log(arr.length);

遍历(for的使用)

数组的遍历:本质是使用for构造出函数的索引,再通过索引取出元素;

// var arr = ['言笙',18,'安徽',15000,'麻辣烫'];
        // //  console.log(arr.length - 1);
        // for (var i = 0; i < arr.length; i++){
        //     // console.log(i);
        //     console.log(arr[i]);
        // }

数组的赋值方法:

 //修改
    // arr[2] = '百威';

    //添加元素
    // arr[5] = '汾酒';

    // var str = '凤酒';
    // arr[6] = str;

数组的方法:

//sort()  排序;
        // console.log(arr1.sort());


        //反转
        // console.log(arr1.reverse());


        //分割为字符串
        // console.log(arr.join('-'));


        //合并数组
        // console.log(arr.concat(arr1,arr2));
        // var newArr = arr.concat(arr1,arr2);
        // console.log(newArr);


        //弹出数组最后一个元素
        // console.log(arr2.pop());


        //数组最后添加元素
        // arr2.push('胡辣汤');
        // console.log(arr2);


        //弹出第一个元素
        // console.log(arr2.shift());
        

        //在数组最前面添加元素
        // arr2.unshift('蒸面条');
        // console.log(arr2);


        //数组的分割
        // console.log(arr.slice(0,2));
        //注:包含开始(start),但不包含结束(end);

各种数组的类型:

     /*
        数组的类型,主要取决于数组中的元素

        对象类型的数组

        {}
      */

    var arr= [
        {name:'新娘',price:10000,img:'xx.jpg'}
    ];
    console.log(arr);

    console.log(arr[0]);

    console.log(arr[0].name);//取出name

多维数组:

二维数组:

 var  arr1 = [
        ['a','b','c'],
        ['aa','bb','cc'],
        [1,2,3]
    ];
    //二维数组的操作
    // console.log(arr1[1]);
    // console.log(arr1[1][1]);
    // console.log(arr1[2][2]);

多维数组:

  // var student = [
    //     ['zs',18,[
    //         '桌球','乒乓球','篮球','足球'
    //     ]]
    // ];
    // console.log(student);
    // console.log(student[0]);
    // console.log(student[0][2]);
    // console.log(student[0][2][0]);

练习题:

  //定义一个30项的数组,数组的每一项要求是1-10的随机数.

    //产生随机数
    function ran (){
        return Math.ceil( Math.random() * 10)
    }
    // console.log(ran());

    var arr = [];
    for (var i = 0 ;i<30;i++){
        //向数组尾部添加元素
        arr.push(ran())
    }
    console.log(arr);

for-in遍历

for-in遍历不需要确定次数

var arr = ['可乐','雪碧','红牛','雀巢'];

// key就是数组的下标
for (var key in arr){
    // console.log(key);
    console.log(arr[key]);
}

对象的遍历

  // var obj = {
        //     name:'小甜甜',
        //     age:18,
        //     sex:'女'
        // }
        // for (var key in obj){
        //     // console.log(key);
        //     console.log(obj[key]);
        // }

冒泡排序

依次对数组中相邻数字进行比较(两两比较),大的放后面;

   //交换两个变量的位置
    //使用第三个变量

    // var a = 10;   定义a

    // var b = 12;   定义b

    // var c = '';   c为空

    // c = a ;		a的值赋值c

    // a = b;		b的值赋值a

    // b = c;       c的值赋值b

    // console.log(a,b);

    //将最大的值放到最后

    var arr = [5,4,3,2,1];
    for (var i = 0 ; i < arr.length ; i++){
        //arr[i]表示当前正在循环的值
        //arr[i + 1]表示下一个值
        if (arr[i] > arr[i + 1]){ //前一个值大于后一个值,交换位置
        var tmp = arr [i];
        arr[i] = arr[i+1];
        arr[i+1] = tmp

        }
    }
    console.log(arr);

理解:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

选择排序

两个值互相比较,小的值放在前面

//找到最小的值,放到前面

    var arr = [5,4,3,2,1];
    // 1 假设最小值

    var min = arr[0];
    var minIndex = 0;

    // 2 使用假设最小值,和数组的每一个元素进行比对,找到最小值;
    for (var  i= 1; i<arr.length;i++){
        if(min>arr[i]){
            //
            min=arr[i];
            minIndex = i;
        }
    }
    // console.log(minIndex);
    //交换假设最小值和真正最小值的位置;
    arr[minIndex] = arr[0];
    arr[0] = min;
    console.log(arr);

理解:
将第一位依次与后面的元素相比较,得到最小值,与第一位交换。
再用第二位依次与后面元素相比较,得到最小值,与第二位交换。

从原始数据中找到最小元素,并放在数组的最前面。
然后再从下面的元素中找到最小元素,放在之前最小元素的后面,直到排序完成

栈和堆

每个内存单元中分为两个部分,栈(stack)和堆(heap);

栈内存:

主要储存各种基本类型的变量,包括Boolean\Number\string\Undefined\Null,以及对象变量的指针;每个单元大小基本相等;

优点:
存取速度快,仅次于直接位于CPU中的寄存器,数据可以共享;
缺点:
存在栈中的数据大小与生存期必须是确定的,缺乏灵活性;

堆内存:

动态分配的内存,大小不定,也不会自动释放,存在引用类型;
指那些可能有多个值构成的对象,包含引用类型的变量,但实际保存的不是变量本身,而是指向该对象的指针;

引用类型:Function,Array,Object

栈内存中,存放的有堆内存中保存的对象对应的指针.每一次调用Object,都是通过栈中指针找到堆中Object的实际位;

//声明两个变量,赋值
var a =10;
var b =a;
b =20;



//声明对象进行比较
var obj1 = {

name:'zs',

  age:18

}

var obj2= obj1;
// 观察obj1的值,是否变化
obj2.age =28;

对象的本质和意义

对象意义
Js中的所有对象有相对应的属性和方法;

    对象中都是 key:value
     key一般不用加'',
     value是字符串就要加

    // 使用
    // 属性 对象.属性名
    // console.log(obj.name);
    // 方法
    //  obj.say();

// console.log(obj.'name'); // 错误

    // 重新赋值
    // obj.name = 'My dream';

    // 添加属性
    // obj.info = '我是一个小清新';
// console.log(obj);

    // 构造函数创建对象
    // var obj1 = new Object({ name: '言笙', age: 18 });
    // console.log(obj1);
    // console.log(obj1.age);

 // []  当属性是变量的时候使用
    // console.log(obj.name);
    // str是变量
    // var str = 'name';
    // 相当于获取obj中的str属性
    // console.log(obj.str);  // undefined

    //  console.log(obj[str]);

    // var str1 = 'age';
    // console.log(obj[str1]);

对象的操作:

 //var obj = {};
    var obj = new Object();
    // 动态的添加属性和方法
obj.name = '小番茄';
obj.age = 18;
    obj.skill = function () {
      console.log('你好呀');
    }
    console.log(obj);

JSON表示对象的方法

JSON是独立语言;用于储存和传输数据的格式,通常用于服务端向网页传递数据;

JSON的语法规则:
数据为 键/值 对。
数据由逗号分隔。
大括号保存对象
方括号保存数组
在JSON中 键 也要用引号引起来;
//json对象 和对象的区别就是key加双引号

例如用JSON对象保存一个人的信息:
var json = {"name":"言笙","age":18,"sex":"女"};
console.log(json);
输出为:{name: "言笙", age: 18, sex: "女"};

JSON数组

用于储存多个人的信息
var  arr = [
            {"name":"言笙","age":18,"sex":"女"},
            {"name":"言情","age":18,"sex":"男"}
        ];
        console.log(arr);
输出为:{name: "言笙", age: 18, sex: "女"};
            {name: "言情", age: 18, sex: "男"};

JSON对象成员的使用,添加方法

     var demo = {
            "name":'zs',
            "age":18,
            "eat":function(){
            alert(1234);
            }
        }
        console.log(demo.name);
        console.log(demo.eat());
// 可以像对象那样调用属性和方法
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值