javascript - 如何创建单个对象的数组Javascript
问题描述
他们都指向同一个对象“bestGamer”我不希望他们这样做,我希望数组中的每个单元格都是一个单独的对象,在他们的道具中具有不同的值。
我想做静态的,因为稍后我想传递一个数组,我不推入运行时不同的值
const bestGamer = {
"name" : "",
"points" : 0
}
arr2 = new Array(2).fill(bestGamer)
console.log("First:",arr2[0])
console.log("Second:",arr2[1]);
arr2[0].name ="Yossi"
arr2[0].points++
arr2[1].name ="Dima"
arr2[1].points++
console.log("First:",arr2[0]);
console.log("Second:",arr2[1]);
console.log("Orignal Object",bestGamer);
解决方案
您需要在将其放入 newArray 时创建一个副本,在所有索引上fill(bestGamer)
放置相同的位置bestGamer
,这样您最终在所有索引上都有相同的引用
let bestGamer = { a: 1, b: 2 }
let newArr = new Array(2).fill(0).map(v=> ({...bestGamer}))
newArr[0].a = 10
console.log(newArr)
您可以使用 Array.from 而不是 new Array
let bestGamer = { a: 1, b: 2 }
let newArr = Array.from({length:2}, () => ({...bestGamer}) )
newArr[0].a = 10
console.log(newArr)
推荐阅读
- c# - 如何在 Visual Studio 2015 中使用 Webbrowser Edge 而不是默认 Web 浏览器
- selenium-webdriver - 我们可以在 c# 中使用 ip 地址作为 selenium webdriver 中的 url 来导航吗?
- r - 为什么具有位置信息的模型在 R 中不起作用
- node.js - 如何正确处理异步 webhook 请求?
- javascript - 订阅映射的http响应的角度“值未定义”(未发出请求?)
- mysql - 在 Mysql 表中批量数据导入而不删除索引
- spring-data-redis - spring-data-redis 为 RedisCacheManager 创建集群
- powerbi - 获取总活动会话、开始和结束时间
- excel - excel中的网页抓取
- python - 如何获取输入并在 Python 3 中运行代码