关于JS数组的问题

发布于 2022-09-11 17:24:10 字数 132 浏览 20 评论 0

a: AA[];
b: AA;

ngOnInit() {
    this.a = [];
}

x() {
    this.a = [...this.a, this.b];  <--- 这是什么意思?
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浮生未歇 2022-09-18 17:24:10

... 展开运算符 | MDN

具体例子你可以进去看看。

橘虞初梦 2022-09-18 17:24:10

clipboard.png

希望能够帮助到 题主!

帅哥哥的热头脑 2022-09-18 17:24:10

先看看babel解析后的结果

 this.a = [...this.a, this.b];
          ↓↓
 this.a = [].concat(_toConsumableArray(this.a), [this.b]);

由这段函数我们可以看到如果为数组会创建新数组克隆,否则会调用 Array.from 方法从类似数组或可迭代对象中创建新的数组实例

function _toConsumableArray(arr) {
 if (Array.isArray(arr)) { 
    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
      arr2[i] = arr[i]; } return arr2; 
    } else { 
      return Array.from(arr); 
    }
  }

我们再来试一遍

 [...'test',10];   // ['t','e','s','t',10] 结果和预期一样

 //再回顾这段代码就清晰许多了
 this.a = [...this.a, this.b];
 判断 this.a 类型 -> 为数组则克隆返回新数组 => 用 this.a 指向 [].concat() 方法拼接的 新数组 和 this.b 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文