2021-10-07 数组与对象和json的知识点补充

1.数组的创建:字面量方式,构造函数方式
        var arr1 = [1, 2, 3];
        var arr2 = new Array(1, 2, 3);
        console.log(arr1, arr2)
2.for in适用于不确定数组个数时,for适用于确定循环次数时
        var arr3 = [2, 34, 5, 87, 1, 31, 7];
        for (var i in arr3) {
            console.log(arr3[i]);
        }
2.2.使用for in 循环对象
        var obj = {
            name: "John",
            age: 18
        };
        for (var j in obj) {
            console.log(obj[j]);
        }
3.冒泡排序和选择排序
3.1.冒泡排序:相邻元素两两比较,大的放后面

逻辑和过程

1.相邻元素两两比较,大的放后面
2.第一轮比较结果是最后面的数是最大数
3.重复比较数组中没排好序的剩下元素(前面的),直到没有要排序的元素

例子:

var arr5 = [1, 4, 3, 7, 9, 2, 5];
        //第一次循环
        // for (var i = 0; i < arr5.length; i++) {
        //     if (arr5[i] > arr5[i + 1]) {
        //         var tmp = arr5[i];
        //         arr5[i] = arr5[i + 1];
        //         arr5[i + 1] = tmp;
        //     }
        // }
        for (var j = 0; j < arr5.length; j++) {
            for (var i = 0; i < arr5.length - j; i++) {
                if (arr5[i] > arr5[i + 1]) {
                    var tmp = arr5[i];
                    arr5[i] = arr5[i + 1];
                    arr5[i + 1] = tmp;
                }
            }
        }
        for (var i in arr5) {
            console.log("arr5 " + arr5[i]);
        }
3.2.选择排序:第一个元素与其余所有元素对比,小的放前面

逻辑和过程

1.第一个元素与其余所有元素对比,小的放前面
2.第一轮比较的结果是最小值放在最前面
3.重复比较余下元素,直到没有要排序的元素

例子:

        var arr6 = [1, 4, 3, 7, 9, 2, 5];
        //第一次循环
        // for (var i = 0; i < arr6.length; i++) {
        //     if (arr6[0] > arr6[i]) {
        //         var tmp = arr6[0];
        //         arr6[0] = arr6[i];
        //         arr6[i] = tmp;
        //     }
        // }
        for (var i = 0; i < arr6.length - 1; i++) {
            for (var j = i + 1; j < arr6.length; j++) {
                if (arr6[i] > arr6[j]) {
                    var tmp = arr6[j];
                    arr6[j] = arr6[i];
                    arr6[i] = tmp;
                }
            }
        }
        for (var i in arr6) {
            console.log("arr6 " + arr6[i]);
        }
4.栈和堆
4.1.栈stack

栈主要是用于储存各种基本类型的变量(Boolean、Number、String、Undefined、Null);
排列上栈内存像是线性排列的空间
优点是读取速度快,数据可以共享,缺点是数据大小和生存周期是固定的

4.2.堆heap

堆主要是存放引用类型(Function,Array,Object),比如多个值构成的对象;
堆内存动态分配,大小不固定也不会主动释放;
实际上存放的不是变量本身,而是指向该对象的指针;

4.3.栈和堆的关系

栈内存中放的是堆内存中保存的对象对应的指针,每次调用对象都是栈中指针找到堆中对象的位置

5.对象的创建
        //字面量创建
        var obj3 = {
            name: "scott",
            age: 22
        };
        //构造函数创建
        var obj4 = new Object({
            name: "susan",
            age: 16
        });
6.对象属性的调用
6.1.对象名.属性名
 console.log(obj3.name);
6.2.对象名[属性字符串]
console.log(obj4["name"]);

二者的区别:当属性名是一个字符串存储在变量中的时候,只能使用关联数组的方式。

7.json表示对象的方法
7.1.什么是json?
        json是独立的语言
        json是用于存储和传输数据的格式
        通常用于服务端想网页传输数据
        它是一种高效的数据存储格式,其结构蚌埠对象一样(都是键值对)
7.2.json的语法规则
1.数据为键值对
2.数据之间用逗号隔开
3.大括号保存对象
4.方括号保存数组
5.json中的键也要用引号
比如:
var str={“name“:”Tom”,“age:18}’;
这是一个JSON字符串的正确,typeof(str)的结果是一个string
json对象例子:
  	 var json_str1 = {
            "name": "张三",
            "son": ["张小牛", "张小羊"]
        };
        console.log(json_str1.son);
        var json_stu = [{
            "name": "小李",
            "mark": 99
        }, {
            "name": "小王",
            "mark": 68
        }, {
            "name": "小孙",
            "mark": 72
        }, ];
        console.log(json_stu);
     /*json是计算机语言中的通用语言,是计算机各种语言之间数据沟通的桥梁*/
json对象成员的使用
var demo = {
    "name": "李四",
    "say": function() {
        alert("你瞅啥?");
    }
};
json字符串和对象的互相转换
1.JSON.stringify(),将一个对象转换成JSON字符串

例子:

       var obj = {
            name: "tom",
            age: 18
        };
        //JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串
        var str = JSON.stringify(obj); //对象-->json字符串
        console.log(obj); //输出对象
        console.log(typeof(str), str); //输出json字符串,类型是string
2.JSON.parse(),将一个JSON字符串转换成对象

例子:

		//一个json字符串的正确格式(花括号外面记得包一层单引号!)
        var str = '{"name": "tom","age": 18 }';
        var obj = JSON.parse(str);//json字符串-->对象
        console.log(str, obj, typeof(str), typeof(obj));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值