热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Array(n)和[...Array(n)]之间的区别

如何解决《Array(n)和[Array(n)]之间的区别》经验,为你挑选了1个好方法。

为什么下面的代码中map()输出有区别?

var y = [1,2,2,1];

var t = y.map(ind => [...Array(ind)].map((_,i) => ind+""+i));
// This makes [ [ '10' ], [ '20', '21' ], [ '20', '21' ], [ '10' ] ]

var t1 = y.map(ind => Array(ind).map((_,i) => ind+""+i));
//[ [ <1 empty item> ], [ <2 empty items> ], [ <2 empty items> ], [ <1 empty item> ] ]

Madara Uchih.. 9

这基本上是您应该避免使用Array构造函数来创建数组的原因.

当传递单个数字n作为参数时,Array构造函数将返回一个长度为数组n但没有元素的数组,也称为稀疏数组.(传递给Array构造函数的任何其他东西,一个字符串,一个对象,两个数字等,将创建一个普通数组,并将传递的参数作为元素按顺序排列).

尝试.map()覆盖此数组将无法工作,因为其中没有项目,这就是为什么您获得相同的稀疏数组.你.map()是一个无操作者.

使用[...(同与Array.from()通过的方式)上的话,会"实现"阵列转向[ <1 empty item> ][undefined][ <2 empty items> ][undefined, undefined],与实际的元件,其值是一个数组undefined..map() 确实有效,所以你得到了你期望的结果.

简而言之,避免使用Array构造函数.



1> Madara Uchih..:

这基本上是您应该避免使用Array构造函数来创建数组的原因.

当传递单个数字n作为参数时,Array构造函数将返回一个长度为数组n但没有元素的数组,也称为稀疏数组.(传递给Array构造函数的任何其他东西,一个字符串,一个对象,两个数字等,将创建一个普通数组,并将传递的参数作为元素按顺序排列).

尝试.map()覆盖此数组将无法工作,因为其中没有项目,这就是为什么您获得相同的稀疏数组.你.map()是一个无操作者.

使用[...(同与Array.from()通过的方式)上的话,会"实现"阵列转向[ <1 empty item> ][undefined][ <2 empty items> ][undefined, undefined],与实际的元件,其值是一个数组undefined..map() 确实有效,所以你得到了你期望的结果.

简而言之,避免使用Array构造函数.


推荐阅读
author-avatar
为了未来而奋斗2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有