javascript - Angular Typescript 将对象推入数组,理解错误
问题描述
所以我试图在我的应用程序中创建一个带有 windows.localstorage 的对象数组。
export class MyListComponent implements OnInit {
public myStorage = window.localStorage;
public list : any [] = [];
public empty = true;
constructor() { }
ngOnInit(): void {
for(var k in window.localStorage) {
var temp = this.myStorage[k].split(",");
console.log(temp);
if(temp.length == 4) {
let item = {
id: k,
type: temp[1]
}
this.empty = false;
this.list.push(item);
console.log(item);
}
}
console.log(this.list);
}
}
出于某种原因,最后一行 console.log(this.list) 似乎没有工作,或者换句话说,没有添加任何内容。我不确定为什么会这样,因为所有其他控制台日志似乎都在工作,例如 console.log(temp) 和 console.log(item)。我的控制台还显示以下错误:
错误类型错误:this.myStorage[k].split 不是 MyListComponent.ngOnInit 的函数
这是为什么?如果它没有成功拆分,则不会创建 temp。如何将我的项目对象添加到我的列表数组中,为什么 this.myStorage.split 会出现类型错误?
解决方案
您可以尝试如下。此外,不建议对 localStorage 等此类实例使用 for...in 循环,因为它迭代所有可枚举属性而不仅仅是自己的属性。
Object.keys(window.localStorage).forEach(k => {
const value = window.localStorage[k];
if (value) {
var temp = value.split(",");
console.log(temp);
if (temp.length == 4) {
let item = {
id: k,
type: temp[1]
}
this.empty = false;
this.list.push(item);
console.log(item);
}
}
});
推荐阅读
- gradle - 在 gradle kotlin dsl 中使用 Avro to java 插件
- ios - SwiftUI TapGesture 不适用于 iOS 列表中的 NavigationLink
- r - R 中的 tidyverse 和 data.table 何时引入列表列?
- excel - 在vba中查找时差
- python - (Pygame) 这个函数有什么问题?
- c++ - 如何反转链表中的链接内存链?
- python - 从文本文件 + Python 创建字典:TypeError:'str' 对象不支持项目分配
- excel - 从 Excel 数据中邮件合并 Word
- r - 在 Shiny 中导航客户端或服务器端文件系统以选择文件夹
- terraform - Terraform 在 0.13 中寻找未指定的提供者