Angular For循环在TypeScript(ES 6)中创建键值对
我想定义一个数据结构,在这里我可以使用一个特定的ID接收名称。 我试着在这里把它们添加到一个dict中,想找回名字Angular For循环在TypeScript(ES 6)中创建键值对,angular,typescript,ecmascript-6,Angular,Typescript,Ecmascript 6,我想定义一个数据结构,在这里我可以使用一个特定的ID接收名称。 我试着在这里把它们添加到一个dict中,想找回名字 let dict = []; for (let company of this.listOfCompanies) { dict.push({ [company.id]: companyName }); } 这是正确的方法吗?我怎样才能找回我的名字?我可以这样做吗 console.log(dict[83519952])
let dict = [];
for (let company of this.listOfCompanies) {
dict.push({
[company.id]: companyName
});
}
这是正确的方法吗?我怎样才能找回我的名字?我可以这样做吗
console.log(dict[83519952]);
它可能会对您有所帮助。设置一个类型来帮助linter和编译器,并使用object而不是array
let dict: { [id: number]: string } = {};
for (const company of this.listOfCompanies) {
dict[company.id] = company.name;
}
如果不打算更改对它的引用,
dict
也可以声明为const
。尝试将dict
视为对象而不是数组。您可以使用
这是vanilla es6中的一个示例,演示了这一点:
const list of companies=[{“id”:100,“companyName”:“foo”},{“id”:101,“companyName”:“bar”}];
const dict=listOfCompanies.reduce((acc,{id,companyName})=>{//将对象中的id和companyName键分解为变量
acc[id]=公司名称;
返回acc;
},{});
console.log(dict[100]);
console.log(dict[101])代码>谢谢您的精彩回答。我最终使用了一个Map(它有一些更好的特性,在未定义时不会抛出错误):
我将对此进行定义:
companiesNames: Map<number, string> = new Map<number, string>();
这很好,但有什么理由这会是一个糟糕的选择吗 您的dict实际上应该是一个对象,而不是一个数组,这样您就可以在O(1)
companiesNames: Map<number, string> = new Map<number, string>();
for (let company of this.listOfCompanies) {
this.companiesNames.set(+company.id, company.name);
}
console.log(this.companiesNames.get(83519952));