javascript - 填充图和填充图的区别
问题描述
我遇到了一些填充对象数组的代码,如下所示:
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
):
解决方案
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))
推荐阅读
- flutter - RangeError(索引):无效值:有效值范围为空:Flutter中为0
- reactjs - 如何仅在 Ag-Grid 中导出当前页面中显示的数据?
- http - 如何在多部分请求中发送空白文件
- bash - 在 bash 中,为什么在这种情况下会忽略新行?
- c# - 如何在 FluentD 中使用转发插件时将输入读取为 json 并转发相同内容?
- distributed-database - 如何修改 TiDB 默认的 GLOBAL 变量,如 TiDB 中的“tidb_replica_read”值
- ansible - 该任务包括一个带有未定义变量的选项。错误是:“项目”未定义
- python - 如何向我的 python keras ANN 添加噪声(抖动)以避免过度拟合?
- android - 编辑文本在 xamarin Android 中自动失去焦点
- kubernetes - 使用 google 容器注册表持续部署到 Google Kubernetes Engine