我正在为我的问题寻找更好的解决方案。我有一个这种格式的数据集合,想知道使用 typescript 从集合中检索数据的最快方法是什么。
- 首先要做的是通过解析集合中的每个元素来识别,并在识别出元素后立即分解。
我们可以使用 C# 和其他语言的更好解决方案。但是,我正在寻找更好的 typescript 解决方案。
结构如下:
myData:
{
Id: string,
Name: string,
Address: string
Salary: number
phone: number
}
假设我们有大约 500 条 ID 唯一的记录。 我在一个表中只显示(ID 和名称),该表的每一行都有复选框。
当我选择一些复选框时,我需要通过遍历此列表并执行一些操作来收集每一行的相应数据。
var selected: ImyData[];
for(var d in data)
{
if(d.id == myId)
{
this.selected.id = d.id;
this.selected.address = d.address
this.selected.salary = d.salary
return;
}
}
但这种方法会不断检查集合中的每个元素,并返回给我性能不佳的地址。想知道在 typescript 中实现的任何建议吗?
最佳答案
你可以在 Javascript 中创建一个“字典”(又名 assoc 数组、哈希表或映射),并得到这样的项目,它是 O(1)
var selected = allItems[id];
使用 for
循环,您可以初始创建字典。您将只执行一次 for
循环,并且每次查找都非常快(因为它不需要 for
循环)
例子:
//init, do this once!
var initObjects = [{ id: "id1", name:"name1" }, { id: "id2", name:"name2" }]
var dict = {};
for (i = 0; i < initObjects.length; i++) {
var item = initObjects[i];
dict[item.id] = item;
}
//retrieving values. No loops! O(1) complexity. Very fast!
console.log(dict["id2"])
console.log(dict["id1"])
(O(1)
= 与列表大小无关的恒定查找时间。因此在包含 100 或 1000000 个项目的列表中查找花费相同的时间)
关于javascript - 使用 typescript 在集合列表中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506387/