gpt4 book ai didi

javascript - 使用 typescript 在集合列表中查找元素

转载 作者:行者123 更新时间:2023-11-30 11:38:34 25 4
gpt4 key购买 nike

我正在为我的问题寻找更好的解决方案。我有一个这种格式的数据集合,想知道使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com