首页 > 解决方案 > 填充图和填充图的区别

问题描述

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

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

在此处输入图像描述

标签: javascriptarraysecmascript-6

解决方案


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


推荐阅读