学习前端第三十天(解构赋值,日期和时间)

一、解构赋值

解构赋值 是一种特殊的语法,它使我们可以将数组或对象“拆包”至一系列变量中。

1、数组解构

        // 数组解构
        let arr = ['c', 'xx', "dwdw"];
        let [a, b] = arr;
        console.log(a, b);

     (1)它“拆开”了数组或对象,将其中的各元素复制给一些变量。原来的数组或对象自身没有被修改。

     (2)可以通过添加额外的逗号来丢弃数组中不想要的元素

        //   用“,”隔开前面或中间不想要的元素
        let [c, , d] = arr;
        console.log(c, d)

     (3)等号右侧可以是任意可迭代对象

        let [a, b, c] = "123"; // [1,2,3]
        let arr = [x, y, z] = new Set(["css", "html", "js"])
        console.log(arr); // {'css', 'html', 'js'}

     (4)给对象中不存在的变量赋值

        let user = {};
        [user.name, user.age, user.gender] = new Set(["jack", 20, "boy"])
        console.log(user);

     (5)与.entries一起使用

        let uuss = { name: 'jack', age: 20, gender: 'boy' };
        for (let [key, value] of  Object.entries(uuss)) {
            console.log(key, value);
        }

     (6)与map一起

        const users = new Map();
        users.set("name", "lili").set("age", 20)
        for (let [key, value] of users) {
            console.log(key, value);
        }

     (7)数组结构交换变量

        let a = 100;
        let b = 222;
        // 把a的值给b,把b的值给a
        [b, a] = [a, b];
        console.log("a", a, "b", b);// a 222 b 100

 其余的“...”,放在最后一个变量前,收集其余的数组项,这个可以用来复制数组

        // 剩余的"..."
        const arr = ["css", "html", "js", "php"]

        // 被“...”修饰的变量会收集剩余值,以数组方式返回,只能加到最后一个变量上
        const [a, b, ...c] = arr;
        const [x, ...y] = arr;
        console.log(c); // ['js', 'php']
        console.log(y); // ['html', 'js', 'php']
        // 复制数组
        const [...d] = arr;
        const [...e] = arr;
        console.log(d); // ['css', 'html', 'js', 'php']

 默认值,变量没有结构到时显现,结构变量都可设置默认值,需从后往前设置

        const arr = ["css", "html"];
        const [a, b, c = '111', d = prompt("sd")] = arr;
        console.log(a, b, c, d); // css html 111 null

 2、对象解构

赋值属性的名字需要和对象中的属性名一样,顺序不重要

当出现重复定义时,给变量一个别名,color: x,属性:变量,前面的属性负责匹配对象中的属性给变量赋值

对象中没有的属性会显示默认值,没有设置默认值会显示undefined

        const info = {
            weight: 200,
            height: 300,
            color: "black",
        };
        const color = "green";

        const { height = 100, weight, color: x, border = "solid", outline } = info;

        console.log(height, weight, x, border, outline); //300 200 'black' 'solid' undefined

 剩余模式“...”

只取其中一部分,将剩余的赋值给其他的变量

let options = {
  title: "Menu",
  height: 200,
  width: 100
};

// title = 名为 title 的属性
// rest = 存有剩余属性的对象
let {title, ...rest} = options;

// 现在 title="Menu", rest={height: 200, width: 100}
alert(rest.height);  // 200
alert(rest.width);   // 100

3、嵌套解构

一个对象或数组嵌套了其他的对象和数组,我们可以在等号左侧使用更复杂的模式(pattern)来提取更深层的数据,需要使用相同的结构。

let options = {
  size: {
    width: 100,
    height: 200
  },
  items: ["Cake", "Donut"],
  extra: true
};

// 为了清晰起见,解构赋值语句被写成多行的形式
let {
  size: { // 把 size 赋值到这里
    width,
    height
  },
  items: [item1, item2], // 把 items 赋值到这里
  title = "Menu" // 在对象中不存在(使用默认值)
} = options;

alert(title);  // Menu
alert(width);  // 100
alert(height); // 200
alert(item1);  // Cake
alert(item2);  // Donut

 可以用一个对象来传递所有参数,而函数负责把这个对象解构成各个参数

// 我们传递一个对象给函数
let options = {
  title: "My menu",
  items: ["Item1", "Item2"]
};

// ……然后函数马上把对象解构成变量
function showMenu({title = "Untitled", width = 200, height = 100, items = []}) {
  // title, items – 提取于 options,
  // width, height – 使用默认值
  alert( `${title} ${width} ${height}` ); // My Menu 200 100
  alert( items ); // Item1, Item2
}

showMenu(options);

二、日期和时间

 1、获得时间

        let date = new Date(); // 创建一个表示当前日期和时间的 Date 对象
        console.log(date); // Sat Apr 27 2024 11:13:23 GMT+0800 (中国标准时间)
        console.log(date.toString()); // Sat Apr 27 2024 11:13:23 GMT+0800 (中国标准时间)

        console.log(date.toLocaleString()); // 2024/4/27 11:13:35
        console.log(date.toLocaleDateString()); // 2024/4/27
        console.log(date.toLocaleTimeString()); // 11:14:04

2、传入时间戳,自1970-01-01 00:00:00以来经过的毫秒数

        let date = new Date(3000);
        console.log(date.toLocaleString()); // 1970/1/1 08:00:03

        date = new Date(365 * 24 * 60 * 60 * 1000); // 经过一年
        console.log(date.toLocaleString()); // 1971/1/1 08:00:00 东八区

        console.log(date.toUTCString()); // Fri, 01 Jan 1971 00:00:00 国际标准时

3、传入字符串,需要用“/”或“-”隔开

        date = new Date("2024/04/27 2:00:00");
        console.log(date.toLocaleString()); // 2024/4/27 02:00:00
        console.log(date.toUTCString()); // Fri, 26 Apr 2024 16:00:00 GMT

4、分别传入单个数值

      月默认值为1,月份从0开始算,“1”算二月,时分秒默认为0

        const date = new Date(2020, 4, 5, 15, 6, 13);
        console.log(date.toLocaleString()); // 2020/5/5 15:06:13
        const date3 = new Date(2020, 4, 10, 20);
        console.log(date3.toLocaleString()); // 2020/5/10 20:00:00
        const date2 = new Date(2020, 4,);
        console.log(date2.toLocaleString()); // 2020/5/1 00:00:00

5、从 Date 对象中访问年、月等信息

        console.log("年", date.getFullYear());
        console.log("月", date.getMonth() + 1);
        console.log("日", date.getDate());
        console.log("时", date.getHours());
        console.log("分", date.getMinutes());
        console.log("秒", date.getSeconds());
        console.log("毫秒", date.getMilliseconds());
        console.log("星期", date.getDay());

6、返回时间戳,从 1970-1-1 00:00:00 UTC+0 开始到现在所经过的毫秒数

        console.log(date.getTime());
        console.log(+date);

7、// 设置日期组件,高位可以设置低位

        const date = new Date();

        console.log(date.toLocaleString());

        date.setFullYear(year, [month], [date])

        date.setFullYear(2025,)

        // date.setMonth(month, [date])

        // date.setDate(date)

        // date.setHours(hour, [min], [sec], [ms])

        // date.setMinutes(min, [sec], [ms])

        // date.setSeconds(sec, [ms])

        // date.setMilliseconds(ms)

        // date.setTime(milliseconds)

8、自动校准

        const date = new Date("2020-12-21 13:30:30");

         date.setMonth(0); // 一月

         console.log(date.toLocaleString()); // 2020/1/21 13:30:30

         date.setDate(0);// 上个月的最后一天

         console.log(date.toLocaleString()); // 2020/11/30 13:30:30

         date.setDate(-10); // 这个月初往前推十天

         console.log(date.toLocaleString()); // 2020/11/20 13:30:30

         date.setSeconds(date.getSeconds() + 70); // 七十秒之后的时间

9、日期可以相减,相减的结果是以毫秒为单位时间差

        const d1 = new Date();
        for (let i = 0; i < 10000000000; i++) {

        };
        const d2 = new Date();

        console.log(d2 - d1); // 程序循环代码的时间

10、Date.parse,从一个字符串中读取日期

let ms = Date.parse('2012-01-26T13:51:50.417-07:00');

alert(ms); // 1327611110417 (时间戳)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/597646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型模型简化机器人训练;简单易用的 3D 工具Project Neo;特斯拉放出了擎天柱机器人最新训练视频

✨ 1: DrEureka 利用大语言模型自动化将机器人仿真环境训练结果转移到真实世界 DrEureka是一种利用大型语言模型&#xff08;LLMs&#xff09;自动化和加速从仿真&#xff08;sim&#xff09;到现实世界&#xff08;real&#xff09;转移的技术。在机器人技能学习领域&#x…

Gradle基础学习(六) 认识任务Task

理解Gradle中的任务 Gradle的构建过程基于任务&#xff08;Task&#xff09;的概念&#xff0c;而每个任务都可以包含一个或多个动作&#xff08;Action&#xff09;。 任务是构建中执行的一些独立的工作单元&#xff0c;例如编译类、创建JAR、生成Javadoc或将存档发布到仓库…

62-USB转JTAG or SPI电路设计

视频链接 USB转JTAG or SPI电路设计01_哔哩哔哩_bilibili USB 转 JTAG or SPI电路设计 第07课---USB转串口电路设计第 34&#xff5e;40课---USB硬件电路设计 第22课---SPI Flash电路设计 第31课---JTAG电路设计&#xff08;JLINK&XILINX&ALTERA&#xff09; 第…

代码随想录-算法训练营day31【贪心算法01:理论基础、分发饼干、摆动序列、最大子序和】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第八章 贪心算法 part01● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其…

5.Git

Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;Java类、xml文件、html文件等&#xff09;。通过Git仓库来存储和管理这些文件&#xff0c;Git仓库分为两种 本地仓库&#xff1a;开发人员自己电脑上的Git仓库远程仓库&#xff1a;远程…

360手机去除广告 360手机关闭弹窗广告 360手机刷机

360手机去除广告 360手机关闭弹窗广告 360手机刷机 360手机去广告 360手机刷机 360手机弹窗广告 永久去除360手机的各种广告教程 360手机禁止更新 360手机关闭广告 360手机去除内部广告 360手机资源网 360手机刷机资源下载链接&#xff1a;360rom.github.io 参考&#xff1a;…

如何高效封装App?小猪APP分发平台一站式解决方案

在移动应用开发领域&#xff0c;App封装&#xff08;App Packaging&#xff09;是一个至关重要的环节&#xff0c;它不仅关乎应用的安全性&#xff0c;还直接影响到最终用户体验和市场推广策略。本文旨在通过实战指南&#xff0c;揭示如何高效完成App封装&#xff0c;并介绍如何…

【图书推荐】《图神经网络基础、模型与应用实战》

本书目的 详解PyTorch 图神经网络基础理论、模型与十多个应用案例&#xff0c;带领读者掌握图神经网络在自然语言处理、计算机视觉、推荐系统、社交网络4个领域的应用开发方法&#xff0c;丰富读者利用深度学习算法解决实际问题的能力。 本书案例 图卷积网络实现图注意力网络…

Python量化炒股的统计数据图

Python量化炒股的统计数据图 单只股票的收益统计图 查看单只股票的收盘价信息 单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令&#xff0c;进入Jupyter Notebook的研究平台。然后单击“新建”按钮&#xff0c;创建Python3文件&#xff0c;输入如下代码如下&am…

知到java笔记(4.1--继承的用法以及this和super的用法)

格式&#xff1a; 例子&#xff1a; get set获取父类的私有变量 private属性 this和super区别&#xff1a; this用法 super用法 例子

星戈瑞CY7-COOH荧光探针,助力生物医学研究

CY7-COOH是一种近红外荧光染料&#xff0c;具有优异的光稳定性、高量子产率和强烈的荧光信号。此外&#xff0c;CY7-COOH还具有较长的激发和发射波长&#xff0c;使其在生物医学成像中具有较高的穿透力和较低的背景干扰。这使得CY7-COOH荧光探针在生物医学研究中具有诸多应用前…

弹性云服务器给用户带来了哪些便利

什么是弹性云服务器&#xff1f; 弹性云服务器&#xff08;ECS&#xff0c;Elastic Cloud Server&#xff09;简单地说&#xff0c;是指运行在云计算环境中的虚拟服务器。弹性云服务器可以说是虚拟专用服务器(VPS)&#xff0c;但VPS却不能说是云服务器。这是因为两者有着本质的…

南京观海微电子---电源,从微观角度观看电功率是怎么产生

从微观角度看看无功功率是怎么产生的&#xff0c;在此之前&#xff0c;我们得先知道引起无功功率的元器件是储能器件&#xff0c;主要是电感和电容。 首先&#xff0c;在宏观上&#xff0c;我们知道电感能导致电压超前电流90&#xff0c;可从如下公式推出&#xff1a; 由此可以…

场景文本检测识别学习 day09(Swin Transformer论文精读)

Patch & Window 在Swin Transformer中&#xff0c;不同层级的窗口内部的补丁数量是固定的&#xff0c;补丁内部的像素数量也是固定的&#xff0c;如上图的红色框就是不同的窗口&#xff08;Window&#xff09;&#xff0c;窗口内部的灰色框就是补丁&#xff08;Patch&#…

量子力学(入门通俗版,转述)

/仅作参考和学习&#xff0c;勿作他用/ 量子力学 量子力学无非就是物理理论。 物理理论就是对自然现象的归纳。------不太容易理解的自然现象。 我们面对的世界&#xff0c;宏观和微观之分。宏观和微观的分界线就是原子。 微观世界和宏观世界没有什么共同点。 牛顿力学用于宏…

14、深入探讨JVM中令人头痛的‘Stop the World’难题

14.1、前文回顾 上一篇文章通过一个实际案例,深入剖析了新生代的对象分配机制,以及对象如何被迁移到老年代。我们还探讨了一个会频繁触发Full GC的场景,并提供了针对性的优化策略,相信大家对JVM的核心运行原理已经理解得相当透彻。 在本文中,我们将讨论一个让Java工程师…

鸿蒙内核源码分析(互斥锁篇) | 互斥锁比自旋锁丰满多了

内核中哪些地方会用到互斥锁?看图: 图中是内核有关模块对互斥锁初始化,有文件,有内存,用消息队列等等,使用面非常的广.其实在给内核源码加注的过程中,会看到大量的自旋锁和互斥锁,它们的存在有序的保证了内核和应用程序的正常运行.是非常基础和重要的功能. 概述 自旋锁 和…

Revit模型移动设备加载优化

BIM/CAD 模型可能包含大量细节&#xff0c;在智能手机和移动 VR 设备上加载时需要特别注意。以下是保持Revit模型整洁的一些步骤&#xff0c;以便任何人都可以毫无问题地加载它们。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 -…

亏了亏了!双向孟德尔随机化阴性结果居然发了SCI二区(IF=6.7)

‍ 今天为诸位介绍的这篇文章是一项双向孟德尔随机化研究&#xff08;MR&#xff09;&#xff0c;惊讶的是&#xff0c;双向因果均为阴性结果发了SCI二区&#xff01;我们一起来看看&#xff01; 2024年4月17日&#xff0c;广东医科大学附属医院的学者做了一项双向两样本孟德尔…

绝地求生:PUBG杜卡迪联名进入倒计时3天!

大家好&#xff0c;我是闲游盒。 杜卡迪联名已经进入倒计时3天&#xff01;喜欢的朋友要注意结束时间可千万别错过&#xff01; 杜卡迪6色车辆 随着五一小长假的结束&#xff0c;本次混沌漫彩通行证也即将结束&#xff0c;本次通行证31级之后没升1级可额外领取1500BP和挑战者纪…
最新文章