TypeScript提取数组元素异常:仅获取到最后一个元素
问题分析与解决方案
嘿,我一眼就瞅出问题所在啦!你现在的代码里,每次循环都把当前元素的username和password直接赋值给this.user和this.pass——这就相当于每轮循环都把之前存的值给覆盖掉了,等循环跑完,自然就只剩最后一个元素的内容咯!
正确的写法来收集所有元素
首先得把this.user和this.pass定义成数组类型(比如user: string[] = [],pass: string[] = [],如果是其他类型可以按需调整),然后在循环里用数组的push方法来追加元素:
// 先正确初始化数组 this.user = []; this.pass = []; for (const x of this.data) { this.user.push(x.username); this.pass.push(x.password); } console.log(this.user); // 现在就能输出所有元素的username啦!
如果你想存成完整的用户对象数组
要是你的需求是把每个用户的账号密码存成一个对象,再放到数组里,那可以这样写:
// 先定义一个存储用户信息的数组 this.users = []; for (const x of this.data) { this.users.push({ username: x.username, password: x.password }); } console.log(this.users); // 这里会输出包含所有用户完整信息的数组
小提醒
之前你尝试的user: []这类初始化写法本身没问题,但核心错误是赋值方式不对——直接用=赋值会覆盖原有内容,只有用push才能把新元素追加到数组里,这样才能收集到所有循环到的数据哦!
内容的提问来源于stack exchange,提问作者QuickAccount123
相关产品推荐
相关产品推荐

