gpt4 book ai didi

javascript - 将变量存储在数组中(充当对象中的值) JavaScript

转载 作者:行者123 更新时间:2023-12-01 00:13:22 24 4
gpt4 key购买 nike

我有一个简单的函数,用于检查用户名是否已存在于对象数组中,如果存在,它应该以格式 { username: username, time: [firsttime, secondarytime, etc] 将新时间保存在数组中}。代码本身很粗糙,但问题是,如果用户名不存在(并且数组不为空,因此已经保存了一些其他用户名),如果我尝试相同的用户名,该函数将节省时间两次,我用双倍时间又得到了一个对象。

let array = []
const userName = prompt("username")
const userTime = prompt("points")
if (array.length > 0) {
for (let i = 0; i < array.length; i++) {
if (array[i].username === userName) {
array[i].time.push(userTime)
} else {
const thisTime = {
username: userName,
time: [userTime]
}
array.push(thisTime)
}
}
} else {
const firstTime = {
username: userName,
time: [userTime]
}
array.push(firstTime)
console.log(array)
}

所以在第一轮我得到 [{username: "maria", time: Array(1)}]

在第二轮使用另一个用户名 [{username: "maria", time: Array(1)}, {username: "ariana", time: Array(2) 例如[14,14](应该只有 1 个值)}]

代码是根据规则编辑的,所以实际的用户名和时间是在游戏过程中添加的。

最佳答案

您可以通过更有效且不易出错的方式来做到这一点:

// look for the index in the array
const pointIndex = this.points.findIndex(point => point.username === this.username);

if(pointIndex > -1){ // if found, push the time
this.points[pointIndex].time.push(this.globalTime);
}
else { // push a new point otherwise
const thisTime = {
username: this.username,
time: [this.globalTime]
}
this.points.push(thisTime)
}

关于javascript - 将变量存储在数组中(充当对象中的值) JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59932906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com