In meinem „for..in…'-Code erscheinen manchmal keine TypeScript-Typfehler
P粉166779363
P粉166779363 2023-09-09 13:47:13
0
1
537

Kein Problem beim Testen, aber manchmal Fehler „Eigenschaft von Null kann nicht gelesen werden (‚Spitzname‘ lesen)“ . Ich habe einen Teil des Codes gepostet.

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

Ich weiß nicht, warum es manchmal kein Problem gibt, aber plötzlich gibt es einen Fehler.

for (const i in seat) {
  if (seat[i] !== null && seat[i].nickname === "user1") {
    seat[i] = null;
    break;
  }
}

Ich habe das Problem vorübergehend gelöst, indem ich den Code in der obigen Form geändert habe. Ich bin neugierig, warum...

P粉166779363
P粉166779363

Antworte allen(1)
P粉903969231

这是因为数组中的一些元素是空值,所以你应该添加一个条件来检查,就像你所做的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;
  }
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage