详解【数组解构】与【对象解构】

一、解构是什么?

所谓解构,就是按照一定模式,从数组和对象中提取值,对变量进行赋值。 解构不仅可以使代码更简洁,还可以使你更清楚地看到你正在使用哪些属性或值。

值得注意的是,解构创建的是新的变量引用,与原始数组或对象中的值相连接,但不与原始数组或对象本身连接(除非这些值是对象或数组)。

二、数组解构

数组解构赋值有一个非常独特的用例,能轻易地互换两个变量的值。

    let  a = 1
    let  b = 3;
    [b,a] = [a,b]
    console.log(a,b) // 3  1

数组解构允许我们从数组中提取值并将它们赋给变量。

   const  arr= [1,23,43,4,5,4,768]
    // 数组解构
    const [a,b,c] = arr
    console.log(a); // 1
    console.log(b); // 23
    console.log(c); // 43
    
	function getValue(){
       return[100,60]
    }
 	const  [max,min] = getValue()
 	console.log(max);  // 100
 	console.log(min);  // 60

如果你只想提取里面某一个变量,那么你就可以省略之前的变量名。例如只想要第三个变量;

	const  arr= [1,23,43,4,5,4,768]
   // 数组解构
    const [ , ,c] = arr
    console.log(c); // 43   

使用过程中会遇到一些特殊情况,变量多,单元值少或者变量少,单元值多。

  • 变量多,单元值少 这种情况下控制台就会返回一个undefined值。
   const [a,b,c,d,e] = ['小米','苹果','华为','格力']
    console.log(a);
    console.log(c);
    console.log(b);
    console.log(d);
    console.log(e); //undefined
  • 变量少,单元值多 此时就可以用 … 语法来将剩余的项目赋值给一个指定的变量。
const [x,y,...c] = ['小米','苹果','华为','格力']
console.log(x);
console.log(y);
console.log(c);  // ['华为', '格力']

多维数组解构

  • 在整个解构模式中插入另一个数组模式,解构操作就会下行到嵌套的数组中
 	   const  arr  = [1,23,43,[14,23,14,4,2]]
       const [w,e,,[a,d,f,g,m]] = arr
       console.log(w); // 1
       console.log(a); // 14

除了基本的数组解构外,我们还可以使用默认值来处理缺失的元素。

// 定义一个数组
const numbers = [1, 2, 3];
// 使用数组解构将数组中的值赋给变量,并设置默认值
const [a, b, c, d = 4] = numbers;
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(c); // 输出: 3
console.log(d); // 输出: 4
  • 我们定义了一个名为numbers的数组,其中只有三个元素。然而,在解构赋值时,我们为变量d设置了默认值为4。当数组中没有第四个元素时,变量d将取默认值。

三、对象解构

let/const{属性名}=被解构的对象

   const  obj={
        uname:"小明",
        age:18,
        address:{
          add:"identity",
          phone:12372
        }
      }
      const {uname,age} = obj 
      console.log(uname); // 小明
      console.log(age);  // 18

默认值

  • 当你使用解构赋值语句时,如果所指定的本地变量在对象中没有找到同名属性,那么该变量会被赋值为 undefined
   const pig = {name:'佩奇',age: 6}
      // 1.
      const {name,age, address} = pig
      console.log(name);
      console.log(age);
      console.log(address); //undefined
  • 你可以选择性地定义一个默认值,以便在指定属性不存在时使用该值。若要这么做,需要在属性名后面添加一个等号并指定默认值
 const pig = {name:'佩奇',age: 6}
      // 1.
      const {name,age, address = "天津"} = pig
      console.log(name);
      console.log(age);
      console.log(address); // 天津

在此例中,变量 address 被指定了一个默认值 “天津” ,只有在 pig 的对应属性缺失、或对应的属性值为 undefined 的情况下,该默认值才会被使用。

重新指定变量名

  const pig = {name:'佩奇',age: 6}
  // 1.
  const {name:uname,age} = pig
  console.log(uname); // 佩奇
  • 也可以给变量别名添加默认值,依然是在本地变量名称后添加等号与默认值
  const pig = {name:'佩奇',age: 6}
  // 1.
  const {name:uname,age,address = "地球村"} = pig
  console.log(uname,age,address); // 佩奇 6 地球村

四、多级解构

对象与数组解构能被用在一起,以创建更复杂的解构表达式。在对象与数组混合而成的结构中,这么做便能准确提取其中你想要的信息片段。

  • 数组中有数组
const numbers = [1, 2, 3, 4, [5, 6, 7]];
// 解构出numbers的第一项n1和第五项中的第二项n2
const [n1, , , , [, n2]] = numbers;
console.log(n1, n2); // 1 6
  • 数组中有对象
const numbers = [1,2,3,4, 5, {name: "abc" }];
// 解构出numbers中的第一项n1和第六项中的name
const [n1, , , , , { name }] = numbers;
console.log(n1, name); // 1 abc

  • 对象中有数组和对象的解构类似写法
   const pig= {
        name:'佩奇',
        family:{
          mother:'猪妈',
          father:'猪爸',
          brother:'乔治'
        },
        age:10
      }
      const {name,family:{mother,father,brother},age}= pig
      console.log(name);  // 佩奇
      console.log(brother); // 乔治
      console.log(mother); // 猪妈
      console.log(age);  // 10
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6数组解构赋值是一种便捷的语法,可以将数组中的元素分配给变量。通过解构赋值,可以轻松地从数组中提取值并将其赋给变量。这种语法可以简化代码,并使代码更易于理解和维护。 使用数组解构赋值,可以按照特定的顺序将数组中的元素赋值给变量。例如,如果我们有一个包含三个元素的数组[1, 2, 3],我们可以使用解构赋值将每个元素分配给对应的变量。代码示例如下: const arr = [1, 2, 3]; const [a, b, c] = arr; console.log(a, b, c); // 输出1, 2, 3 在上面的代码中,我们定义了一个名为arr的数组,并使用解构赋值将数组中的第一个元素赋值给变量a,第二个元素赋值给变量b,第三个元素赋值给变量c。最后,我们将这些变量的值打印出来。 需要注意的是,解构赋值的顺序与数组中元素的顺序有关。换句话说,解构赋值的左边的变量必须与数组中的元素的顺序相对应。如果解构赋值的变量数目少于数组中的元素数目,那么多余的元素将被忽略。如果解构赋值的变量数目多于数组中的元素数目,那么多余的变量将被赋值为undefined。 此外,需要注意的是,解构赋值只能用于具有Iterator接口的数据结构。这意味着,只要数据结构具有Iterator接口,就可以使用数组形式的解构赋值来提取值。 总结来说,ES6数组解构赋值是一种方便的语法,可以将数组中的元素分配给变量。它可以简化代码,提高代码的可读性和可维护性。通过数组解构赋值,可以按照特定的顺序将数组中的元素赋值给变量,并且解构赋值只能用于具有Iterator接口的数据结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ES6数组对象解构赋值详解](https://download.csdn.net/download/weixin_38621870/12940725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ES6-----数组解构](https://blog.csdn.net/zhouzhou20002000/article/details/128325411)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ES6 数组解构学习](https://blog.csdn.net/QY_99/article/details/126279215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值