Shn*_*ick 6 javascript arrays ecmascript-6
我遇到了一些代码,这些代码正在填充对象数组,如下所示:
const getObj = () => {
return {a: 1, b: 2, c: 3};
}
const arr = Array(3).fill(null).map(getObj);
console.log(arr);
Run Code Online (Sandbox Code Playgroud)
但是,我想知道它的主要目的fill(null).map(getObj)是什么?看起来很多余,因为我可以简单地编写以下代码并获得相同的结果数组:
const getObj = () => {
return {a: 1, b: 2, c: 3};
}
const arr = Array(3).fill(getObj());
console.log(arr);
Run Code Online (Sandbox Code Playgroud)
因此,我想知道这两行代码是否做完全相同的事情,或者我缺少什么?
生成的数组(使用fill + map底部数组的顶部数组优先方法仅使用map):
Array(3).fill(getObj())将使用对同一对象的引用填充数组,Array(3).fill(null).map(getObj)将为每个元素创建对象。请参阅以下示例:
const getObj = () => {
return {a: 1, b: 2, c: 3};
}
const arr = Array(3).fill(null).map(getObj);
arr[0].b=4;
console.log(JSON.stringify(arr));
const arr1 = Array(3).fill(getObj());
arr1[0].b=4;
console.log(JSON.stringify(arr1))Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |