javascript - 填充图和填充图的区别

标签 javascript arrays ecmascript-6

我遇到了一些填充对象数组的代码,如下所示:

const getObj = () => {
  return {a: 1, b: 2, c: 3};
}

const arr = Array(3).fill(null).map(getObj);
console.log(arr);

但是,我想知道 fill(null).map(getObj) 的主要目的是什么?这似乎是多余的,因为我可以简单地编写以下内容并获得相同的结果数组:

const getObj = () => {
  return {a: 1, b: 2, c: 3};
}

const arr = Array(3).fill(getObj());
console.log(arr);

所以,我想知道这两行代码是否做完全相同的事情,或者我是否遗漏了什么?

生成的数组(顶部数组第一种方法使用 fill + map 底部数组仅使用 map):

enter image description here

最佳答案

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))

关于javascript - 填充图和填充图的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704826/

相关文章:

javascript - Windows 7 专业版上的 "Fatal error: Unable to find local grunt."

java - 需要帮助理解奇怪的数组语法

c++ - 为什么在声明多维数组时允许省略第一个维度,而不能省略其他维度?

typescript - 间接引用远程 Javascript URL

javascript - 在解构括号内赋值?

javascript - 闭包和解构——解构函数不能互相调用?

javascript - 将字符串传递给 settimeout 是不好的做法吗?如果是,为什么?

Javascript:更改 <h2> 标题颜色 onmouseover()

javascript - 使用 html2canvas 将 div 捕获到图像中

arrays - 在 Excel 中使用 If 大语句并填充表格的剩余部分