js集合, 对象

    科技2025-10-21  12

    集合

    一个标识符(集合),可以存储多个数据, 数据不能重复。

    集合与数组的区别 集合的内容具有唯一性 ( 全等匹配) 去重复。

    // 声明集合 构造函数 let F70 = new Set(); //集合赋值 F70.add(1); F70.add(2); F70.add(1); F70.add("1"); //使用集合 console.log(F70);//Set { 1, 2, '1' } 可以看出集合有去重复。 //数组去重 let F71 = []; F71.push(123); F71.push(234); F71.push(234); console.log(F71);//[ 123, 234, 234 ] let F70 = new Set(F71); F71 = [...F70]; console.log(F71);//[ 123,234 ] //集合的方法和属性 /** * 属性size * 书写格式: 集合.size * 功能:输出集合存储数据的个数 */ let F70 = new Set([1, 2, 3]) console.log(F70.size);//3 /** * 集合的方法 * * 链式调用 * 一行代码连续书写多个方法。 * 由于add方法的返回值是集合 * 因此可以在add后面继续添加add */ let F70 = new Set(); F70.add("A").add("B").add("C"); console.log(F70);//Set { 'A', 'B', 'C' } //删除集合里的内容 F70.delete("A"); //小括号里删除的内容 console.log(F70); //Set { 'B', 'C' } //集合的键值对(键值就是键名) //清空集合 F70.clear(); console.log(F70);//Set {} let F70 = new Set([1, 2, 3]); //查找 console.log(F70.has(1)); //true //集合遍历 for (let item of F70.keys()) { //键名 console.log(item);//1 2 3 } for (let item of F70.values()) { //键值 console.log(item);//1 2 3 } for (let item of F70.entries()) { //键名和键值 console.log(item); // [1,1] [2,2] [3,3] }

    Object 对象

    数据结构:存储多个数据

    一切事物皆对象!!!

    声明对象

    字面量声明 书写格式: 关键字 标示符 赋值符号 大括号 分号 let F70 = {} ;

    let F70 = {}; console.log(F70, typeof F70);//{} object

    构造函数 书写格式: 关键字 标示符 赋值符号 new Object(); let F70 = new Object(); let F70 = new Object();

    /** * 【对象的初始化】 * { * 属性名1 : 属性值1, * 属性名2 : 属性值2, * ... * 属性名n : 属性值n, * * 方法名1 : function (){代码块}, * 方法名2 : function (){代码块}, * ... * 方法名n : function (){代码块} * } * */ let zhuozhuo = { eyes: 2, legs: 2, length: 100, life: 100, money: 1000, suidashi: function() { console.log(`sui!!!`); this.life--; this.money += 1000; }, dabaojian: function() { this.life++; this.money -= 999; } } console.log(zhuozhuo.eyes);//2 console.log(zhuozhuo.length);//100 //使用对象的方法 zhuozhuo.suidashi(); console.log(shexiaoguo.life);//99 console.log(shexiaoguo.money);//2000 zhuozhuo.dabaojian(); console.log(shexiaoguo.life);//100 console.log(shexiaoguo.money);//1001 /** * 当使用对象不存在的属性,会得到undefined * 原因:使用之前,JS会在对象中添加此属性,并赋值undefined */ let F72 = {}; console.log(F72.length); //undefined console.log(F72.yangfan); //undefined //对象属性和方法的添加 let f70 = { money: 100, work: function() { this.money += 100; }, shopping: function(payMoney) { money -= payMoney; } }; f70.gf = "guoguo"; f70.bf = "xiaoxiao"; f70.money = 0; console.log(f70);//{ // money: 0, // work: [Function: work], // shopping: [Function: shopping], // gf: 'guoguo', // bf: 'xiaoxiao' } console.log(f70.gf);//guoguo f70.cry = function() { this.money += 1000; } f70.cry(); console.log(f70.money);//1000 //我们发现若添加一个存在的属性,会把原有的属性进行覆盖。 // 为了解决这个问题,会声明一个Symbol类型的变量。 // 声明Symbol变量 //注:1、小括号里的内容是Symbol变量的注释 //2、声明是不要添加new let money = Symbol(); // 给Symbol变量赋值(需要告知给哪个对象添加) f70[money] = 0; console.log(f70.money); //1000 // 使用方式:属性名[symbol变量] console.log(f70[money]); //0 //属性和方法的删除 //删除属性的格式: delete 对象名.属性名 ; delete f70.money; console.log(f70.money);//undefined // 使用被删除的属性,会等到undefined // 调用被删除的方法,会报错(对象没有这个方法) //删除方法的格式: delete 对象名.方法名; //注:方法名后不加小括号 // delete huangmiliang.work; //遍历对象 let f71 = { name: "WLM", age: "18", gender: "male" }; //遍历对象的键名 for (let item of Object.keys(f71)) { console.log(`键名:${item}`);//键名:name 键名:age 键名:gender } //遍历对象的键值 for (let item of Object.values(wulinmeng)) { console.log(`键值:${item}`);//键值:WLM 键值:18 键值:male } //遍历对象的键值对 for (let item of Object.entries(wulinmeng)) { console.log(`键值对:${item}`);//键值对:name,WLM 键值对:age,18 键值对:gender,male } //判断对象中是否存在要查找的键名 console.log("name" in f71);//true console.log("123" in f71);//false //对象的嵌套 let f73 = { name: "WLM", age: "18", gender: "male", gf: { name: "xiaohua1", age: 18, song: function() { console.log(`酒醉的蝴蝶!!!`); }, dance: function() { console.log(`动词打次!!!`); } } }; console.log(wulinmeng.gf.name);//xiaohua1
    Processed: 0.011, SQL: 8