JavaScript解构对象

news2024/11/26 22:26:12

之前介绍了数组解构,本文来介绍一下对象如何解构;

前言

现在我们有这样的一个数组:

const restaurant = {
  name: 'Classico Italiano',
  location: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],

  order: function (starterIndex, mainIndex) {
    return [
      restaurant.starterMenu[starterIndex],
      restaurant.mainMenu[mainIndex],
    ];
  },

  openingHours: {
    thu: {
      open: 12,
      close: 22,
    },
    fri: {
      open: 11,
      close: 23,
    },
    sat: {
      open: 0, // Open 24 hours
      close: 24,
    },
  },
};

基本解构

const {name,openingHours,categories} = restaurant;
console.log(name,openingHours,categories);

在这里插入图片描述

除此之外,我们也可以将解构出来的数组赋予不同的变量名称

const {name: restaurantName, openingHours: hours, categories:tags} = restaurant;
console.log(restaurantName,hours,tags);

在这里插入图片描述

赋予默认值

当我们解构对象中不存在的一个方法时,我们最好给与一个默认值,否则会变成未定义的;

const {menu = [], starterMenu: starter = [] } = restaurant;
console.log(menu,starter);

在这里插入图片描述

当不存在时候会输入你所给的默认值,当存在时就输出对象中存在的方法;

修改变量

let a = 111;
let b = 999;
const obj = {a: 23, b: 44, c: 91};
{a , b} = obj;

在这里插入图片描述

在 JavaScript 中,当使用解构赋值语法时,如果想要将属性值从对象中提取并赋给已经声明的变量,需要使用括号将整个解构表达式包裹起来。正确的如下:

let a = 111;
let b = 999;
const obj = {a: 23, b: 44, c: 91};
({a , b} = obj);
console.log(a,b);

在这里插入图片描述

解构嵌套数组

例如刚刚开始的那个对象,对象中有关于饭店开门关门的时间,就是一个对象中嵌套另一个对象,如果我们想知道周五开门和关门时间,如果将其从数组中解构出来呢?

const {fri: {open: o, close: c},} = openingHours;
console.log(o,c);

在这里插入图片描述

技巧:通过函数,直接通过参数解构

const restaurant = {
  name: 'Classico Italiano',
  location: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],

  order: function (starterIndex, mainIndex) {
    return [
      restaurant.starterMenu[starterIndex],
      restaurant.mainMenu[mainIndex],
    ];
  },

  oderDelivery: function({starterIndex = 1, mainIndex = 0, time='20:00',address,}) {
    console.log(`Order received! ${this.starterMenu[starterIndex]} and ${this.mainMenu[mainIndex]} will be delivered to ${address} at ${time}`);
  },
};

restaurant.oderDelivery (
  {
    time: '22:30',
    address: "Via del Sole, 21",
    mainIndex: 2,
    starterIndex: 2,
  }
)

在这里插入图片描述

上面的代码是 restaurant 对象中的 oderDelivery 方法的实现部分。该方法接受一个对象作为参数,使用解构语法从该参数对象中提取需要的属性值。
具体来说,oderDelivery 方法接受一个对象作为参数,并从该对象中解构出以下属性:
● starterIndex:默认值为 1,表示前菜索引,默认为 1。
● mainIndex:默认值为 0,表示主菜索引,默认为 0。
● time:表示送餐时间,默认为 ‘20:00’。
● address:表示送餐地址。
然后,在方法内部,它使用解构出的属性值打印一条消息,表示订单已接收并将会在指定时间送到指定地址:

javascriptCopy Codeconsole.log(`Order received! ${this.starterMenu[starterIndex]} and ${this.mainMenu[mainIndex]} will be delivered to ${address} at ${time}`);

这段代码的作用是在控制台打印出一条包含订单信息的消息,其中包括了所选的前菜和主菜以及送餐地址和时间。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LINUX入门篇【10】---进程篇【2】---进程状态

前言: 有了上一篇关于进程的初步认识和我们的PCB第一个数据段–标识符的讲解,接下来我们将继续讲解PCB的其他数据段,本篇要讲的是进程状态。 进程状态: 就像我们写贪吃蛇的时候,构建的游戏状态来判定游戏结束的方式…

1-1、汇编语言概述

语雀原文链接 文章目录 1、机器语言2、汇编语言(Assembly Language)汇编语言工作过程汇编语言三类指令 3、学习资料电子PDF课件论坛视频教程 1、机器语言 机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器…

【uniapp】微信运行报错TypeError_ Cannot read property ‘FormData‘ of undefined

文章目录 一、报错详情:二、解决: 一、报错详情: 二、解决: npm install axios0.27.2 #或者 npm install axios1.3.4

SpringBoot——国际化

优质博文:IT-BLOG-CN 一、Spring 编写国际化时的步骤 【1】编写国际化配置文件; 【2】使用ResourceBundleMessageSource管理国际化资源文件; 【3】在页面使用ftp:message取出国际化内容; 二、SpringBoot编写国际化步骤 【1】创…

【算法优选】 动态规划之路径问题——壹

文章目录 🎋前言🎋[不同路径](https://leetcode.cn/problems/unique-paths/)🚩题目描述:🚩算法思路:🚩代码实现 🎋[不同路径二](https://leetcode.cn/problems/unique-paths-ii/desc…

金蝶Apusic应用服务器 任意文件上传漏洞复现

0x01 产品简介 金蝶Apusic应用服务器(Apusic Application Server,AAS)是一款标准、安全、高效、集成并具丰富功能的企业级应用服务器软件,全面支持JakartaEE8/9的技术规范,提供满足该规范的Web容器、EJB容器以及WebSer…

使用echars实现数据可视化

生活随笔 展翅飞翔之际 请下定决心不再回头 echars实现数据可视化 在搭建后台页面时,可能会遇到很多的表格,但有时表格所展现的数据并不能直观的体现出当前用户的宏观信息,所以就可以引入一个新的表格插件——echars 快速上手 - Handbook…

客户关系管理系统功能清单

客户关系管理系统功能清单 一、客户信息管理 1. 客户基本信息:包括客户名称、地址、电话、电子邮件等。 2. 客户关系信息:包括客户的购买历史、服务记录、支持案例等。 3. 客户分类信息:根据客户的重要程度、购买行为、偏好等因素&#xff…

01-鸿蒙4.0学习之开发环境搭建 HelloWorld

HarmonyOS开发学习 1.环境配置 1.下载地址 开发工具:DevEco Studio 3.1.1 Release 下载地址 安装选择快捷方式 安装nodejs和Ohpm 安装SDK 选择同意Accept 检测8项目是否安装成功 2.创建项目 —— hello word

美国高防云服务器的优劣势分析(相比普通云服务器)

在当前数字化时代,云服务器已经成为企业和个人进行在线业务的重要基础设施。而在选择云服务器时,很多人会面临一个问题:是选择普通云服务器还是高防云服务器?本文将从多个方面来分析美国高防云服务器相比普通云服务器的优势和劣势。 我们来看…

ELK分布式日志管理平台部署

目录 一、ELK概述 1、ELK概念: 2、其他数据收集工具: 3、ELK工作流程图: 4、ELK 的工作原理: 5、日志系统的特征: 二、实验部署: 1、ELK Elasticsearch 集群部署 2、安装 Elasticsearch-head 插件 …

手把手教你如何设置同花顺的分时量颜色

文章目录 💢 问题 💢💯 设置方法 💯🐾 操作步骤💢 问题 💢 同花顺软件的分时图中,分时成交量的颜色不是我们常见的红绿色,我们可以通过设置将分时颜色设置为上涨量为红,下跌量为率,以便观察,如图 💯 设置方法 💯 本教程是在同花顺v9.20.50版本中进行演…

linux task_struct中进程调度相关的变量记录

参考文章: Linux进程调度分析记录,进程优先级,隔离处理器,isolcpus - 知乎

中兴交换机:DHCP的配置

一、配置说明 拓扑图 S1是中兴三层核心交换机,作为DHCP Server使用,同时作为网关,PC通过自动获取IP地址接入网络 注意事项: S1全局下需要配置:IP Pool,DHCP Policy,打开DHCP功能 S1接口下需…

C# WPF上位机开发(第一个应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 万事开头难,很多事情都是难在第一步。走出了这第一步,回过头看以前走的每一步,发现其实也不难。用c# wpf编写界…

基于单片机仿指针显示的电子时钟设计

**单片机设计介绍, 基于51单片机超声波测距汽车避障系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机仿指针显示的电子时钟是一种利用单片机控制器和LED或LCD显示屏幕来模拟传统时钟指针的显示效果的设计…

【Unity程序技巧】加入缓存池存储地图资源,节省资源,避免多次CG

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

【Spring Boot】Swagger的常用注解

在Swagger的开发过程中,我们需要在Controller代码等处添加相应的注解,以便可以提高生成的接口文档的可读性为了解决这些问题,Swagger提供了很多的注解,通过这些注解,我们可以更好更清晰的描述我们的接口,包…

Java LeetCode篇-深入了解关于数组的经典解法

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 轮转数组 1.1 使用移位的方式 1.2 使用三次数组逆转法 2.0 消失的数字 2.1 使用相减法 2.2 使用异或的方式 3.0 合并两个有序数组 3.1 使用三指针方式 3.2 使用合…

欧飞信发布WIFI7网卡模组—O7851PM

在当今飞速发展的科技世界中,流畅快速的网络连接已经成为我们生活中不可或缺的一部分。为了满足现代应用环境对于高速、稳定无线连接的需求,欧飞信于今日推出一款最新的WIFI7网卡模组——O7851PM,标志着我们欧飞信在无线通信领域的巅峰技术成…