【问题标题】:Setting one array equal to another array makes it behaving like an object, what am I missing? [duplicate]将一个数组设置为等于另一个数组使其表现得像一个对象,我错过了什么? [复制]
【发布时间】:2020-04-14 02:55:08
【问题描述】:

我已经设置了:

const [c, d] = ["h", "i"]

在浏览器控制台中。它返回未定义。

之后,当我输入 c 时,它会返回 "h", 当我输入 d 时,它会返回 "i"

对我来说,它看起来像一个对象,我根据 ["h", "i"] 设置了 cd 的值strong> 的命令

在过去的 9 个月里,我一直在学习 Javascript。我不确定我错过了什么?为什么会这样?

【问题讨论】:

  • 您使用的是destructuring assignment,实际上并没有将一个数组设置为另一个数组。
  • 你可以发明所有你想写的代码,但不要指望它们能匹配任何语言的语法规则,甚至是javascript
  • 为什么要在控制台输入这个? ))
  • 我正在学习反应钩子,我在“useState”中看到了这一点,并在与讲师一起创建新钩子时。我被这个“const [state, setstate] = useState(false);

标签: javascript arrays object


【解决方案1】:

如果您试图将一个数组设置为与另一个数组相等,您只需要:

const c = ["h", "i"];
const d = c;

【讨论】:

  • 嗨詹姆斯,谢谢您的回答。请告知您做了什么以及为什么它可以解决问题
  • 嗨,我只是展示了如何将一个数组设置为等于另一个数组(而不使其表现为一个对象),正如您在问题标题中提到的那样。
  • 太棒了。请使用此解释编辑您的答案。
【解决方案2】:

此声明

const [c, d ] = ["h", "i"]

destructuring,不是数组赋值。它不读作

"一个包含元素 c 和 d 的数组将被赋予 h 的值 和我”

但它读作

"具有 h 和 i 值的数组被解构为 变量分别称为 c 和 d。”

因此,结果不是一个数组,也不是一个对象,而是两个变量。你可以使用 babeljs.io 来检查你的代码的等价物:

"use strict";

var c = "h",
    d = "i";

【讨论】:

    【解决方案3】:

    您正在使用解构 - 一个很棒的功能,可以直接获得对对象或数组的嵌套属性的命名访问:

    const car= {
        color: 'blue',
        power: '120HP',
        brand: 'an awesome one'
    };
    
    // Object Destructuring
    const { colorOfCar, powerOfCar, brandOfCar} = car;
    

    然后您就可以直接使用这些变量名。 它或多或少简称为:

    const colorOfCar = car.color;
    const powerOfCar = car.power;
    const brandOfCar = car.brand;
    

    希望对你有帮助!

    更新: Array 可以通过以下方式进行解构:

    const rgb = [255, 200, 0];
    
    // Array Destructuring
    const [red, green, blue] = rgb;
    

    缩写:

    const red = rgb[0];
    const green= rgb[1];
    const blue= rgb[2];
    

    【讨论】:

    • 这也适用于 Array 吗?
    • 是的!我会更新答案。
    【解决方案4】:

    您正在使用解构赋值。那么变量c = arr[0], d = arr[1]

    如果需要复制数组:

    const newArr = arr.concat();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2023-02-24
      • 1970-01-01
      • 2021-05-14
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多