我想定义一个数据结构,在其中可以使用特定ID接收名称。 我尝试将它们添加到此处的字典中,并想找回名字
let dict = [];
for (let company of this.listOfCompanies) {
dict.push({
[company.id]: companyName
});
}
这是正确的方法吗?以及如何找回我的名字?我可以这样吗?
console.log(dict[83519952]);
答案 0 :(得分:2)
设置类型以帮助linter和编译器,并使用对象而不是数组。
let dict: { [id: number]: string } = {};
for (const company of this.listOfCompanies) {
dict[company.id] = company.name;
}
如果您不打算更改对它的引用,也可以将 dict
声明为const
。
答案 1 :(得分:0)
let dict = [];
for (let company of this.listOfCompanies) {
dict[company.id]= companyName;
});
}
这可能会对您有所帮助。
答案 2 :(得分:0)
尝试将dict
作为对象而不是数组。您可以使用Array.reduce
来做到这一点。
这是vanilla es6中的一个示例,证明了这一点:
const listOfCompanies = [{"id": 100, "companyName": "foo"}, {"id": 101, "companyName": "bar"}];
const dict = listOfCompanies.reduce((acc, {id, companyName} ) =>{ //destructuring id and companyName keys from the object to variables
acc[id] = companyName;
return acc;
},{});
console.log(dict[100]);
console.log(dict[101]);
答案 3 :(得分:0)
感谢您的出色回答。我最终使用了Map(具有一些更好的功能,即在未定义时不会抛出错误):
我将定义它:
for (let company of this.listOfCompanies) {
this.companiesNames.set(+company.id, company.name);
}
console.log(this.companiesNames.get(83519952));
然后在我的函数中
{{1}}
那很好,但是有什么理由这是一个不好的选择吗?