在测试时没有问题,但有时会出现错误"无法读取null的属性(读取'nickname')"。 我贴出了一部分代码。
let seat = [
null,
null,
{ nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" },
null,
{ nickname: "user2", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" },
null,
null,
null,
null,
null,
null,
];
for (const i in seat) {
if (seat[i].nickname === "user1") {
seat[i] = null;
break;
}
}
console.log(seat);
我不知道为什么有时候没有问题,突然就出现了错误。
for (const i in seat) {
if (seat[i] !== null && seat[i].nickname === "user1") {
seat[i] = null;
break;
}
}
我通过改变上述形式的代码暂时解决了问题。 我对原因很好奇...
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是因为数组中的一些元素是空值,所以你应该添加一个条件来检查,就像你所做的
seat[i] !== null,但你也可以使用可选链操作符?.。参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining
for (const i in seat) { if (seat[I]?.nickname === "user1") { seat[i] = null; break; } }示例: 如果你的数据像下面这样,你不需要添加条件或可选链操作符。
let seat = [ { nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" }, { nickname: "user4", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe263" }, { nickname: "user5", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe264" }, { nickname: "user3", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe265" }, { nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe267" }, { nickname: "user2", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe269" }, ]; for (const i in seat) { if (seat[i].nickname === "user1") { seat[i] = null; break; } }