gpt4 book ai didi

javascript - 如何在javascript中最好地搜索和更新两个对象数组?

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

所以我这里有一个 Person 对象,它具有以下两个属性:名字和心情。假设名字属性是唯一的。

如果我有一个包含 3 个 Person 对象的数组 ()(假设每一行都是一个 Person 对象):

Alison, Happy
Bob, Sad
Charles, Happy

如果有第二个数组,例如 3 个人(来自 JSON 数组):

Alison, Sad
Bob, Happy
Jordan, Sad

我想要最有效的方法来迭代第二个数组来更新第一个数组中的项目。我的想法是用 2 个 for 循环。例如:

第一次迭代,看到艾莉森,在第一个数组中搜索艾莉森,将艾莉森更新为悲伤。第二次迭代,看到鲍勃,搜索......等第三次迭代,看到乔丹,在第一个数组中搜索乔丹,没有找到...将新对象与乔丹一起插入数组,悲伤。

现在我知道数组可能不是执行此操作的最佳方法,如果有更好的方法来完成此操作而不需要第一个数组是数组..可以是 map 等。我关心的是性能因为我描述的方法对于很多人来说效率极低,例如如果数组大小为 100。

请帮忙,不胜感激。

最佳答案

这在一定程度上取决于您的浏览器和库环境。有 Array.indexOf('value'),但这在 IE 中不起作用,而且它可能只是在幕后执行一个(优化的)循环。

如果您有大量数据,并且很可能已排序,但您的情况似乎并非如此,那么最好进行二分搜索。换句话说,从数据集中间获取值并将其与您的查询进行比较。如果它更大,则您的下一个查询是该组值的前半部分的中间值,依此类推,直到获得它。

不一定是性能问题的解决方案(尽管比某些问题更好),但就减少编码开销而言,这种工作的一个很好的替代方案是 underscore.js图书馆。使用下划线,您可以使用 _detect 来获取您的值,然后如果未找到,则使用 Array.push

关于javascript - 如何在javascript中最好地搜索和更新两个对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6501194/

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