javascript – 在ES6中制作重复元素列表的等效方法是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在ES6中制作重复元素列表的等效方法是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1188字,纯文字阅读大概需要2分钟。
内容图文
在Python中,我可以这样做:l = [{‘d’:3}] * 5得到[{‘d’:3},{‘d’:3},{‘d’:3},{‘d ‘:3},{‘d’:3}].
在ES6中执行此操作的等效方法是什么,实际上克隆对象而不仅仅是复制引用?
编辑:基本上,ES6中有一个快捷方式来制作以下数组:
const arr = [
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
{"d": 3},
];
?
解决方法:
字面上的等价物将是
const arr = Array(5).fill({d: 3});
这将使用相同的对象引用填充数组五次.
获得克隆稍微复杂一些.考虑:
Array.apply(null, Array(5)).map(_ => ({d: 3}));
要么
Array(5).fill(0).map(_ => ({d: 3}));
这是一个快速而肮脏的性能比较.对于n的小尺寸,O(n)填充看起来似乎完成了两个数组的创建.随着n的增长,这似乎有所改变.
绝对玩数字,如果这是一个重要因素,建立自己的测试.
'use strict';
const loops = 100000;
const size = 50;
const a0 = performance.now();
for (let i = 0; i < loops; i++)
Array.apply(null, Array(size)).map(_ => ({d: 3}));
const a1 = performance.now();
console.log('Apply %fms', a1 - a0);
const f0 = performance.now();
for (let i = 0; i < loops; i++)
Array(size).fill(0).map(_ => ({d: 3}));
const f1 = performance.now();
console.log('Fill %fms', f1 - f0);
另请注意,在使用普通函数替换箭头函数时,apply方法具有有效ES5的优点.
内容总结
以上是互联网集市为您收集整理的javascript – 在ES6中制作重复元素列表的等效方法是什么?全部内容,希望文章能够帮你解决javascript – 在ES6中制作重复元素列表的等效方法是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。