【问题标题】:Use array or JSON to keep track of unique list使用数组或 JSON 来跟踪唯一列表
【发布时间】:2016-01-11 20:37:14
【问题描述】:

我在 Parse .com 数据库中有一个对象,可以收到点赞投票。我想跟踪哪些用户提供了竖起大拇指,以防止同一用户再次这样做。我正在考虑向我的对象添加一个名为“voters”的字段,该字段将保存投票用户列表。

这应该是用户名数组还是带有键作为用户名的 JSON?

如果我可以使用 json 映射并 O(1) 查找键上的名称,我为什么要使用数组?

ie object.voters[uername] = undefined then no votes?

【问题讨论】:

    标签: javascript performance parse-platform lookup


    【解决方案1】:

    如果您只需要选民的姓名,请使用数组。

    如果您需要更多信息而不仅仅是名称,请使用 Json。

    为什么如果你只需要名字,首先用选民姓名制作一个数组会很容易,其次它会更快处理。

    但是如果你需要类似的东西 voter={"name":"foo","age":"25"} 如您所见,我们可以使用 json 的强大功能来保存有关一个用户的多个信息,并且无论如何每个选民都必须在一个数组中,以便您可以遍历它们

    更新--- 要在数组中查找名称的索引,只需使用 array.indexOf("the name") 这将返回的是名称的索引号,如果名称不存在,它将仅返回 -1,所以一个简单的 if else 可以处理这个

    更新---

    here 我发现了一个性能测试来比较哪个在数组或对象中查找速度更快,而且似乎数组仍然胜出。

    here 是另一个阅读来源

    【讨论】:

    • 是的,但这意味着每次我想找到用户时都需要搜索数组,而在 json 中我可以使用密钥立即访问该项目?
    • @ArmenSafieh-Garabedian 我正在更新问题
    • 我关心的不是代码,我关心的是数组上的查找时间(如何在内部进行 indexOf 工作?)与键查找相比
    • 这里是比较循环和索引的测试,它更快jsperf.com/js-for-loop-vs-array-indexof/39
    • 我想你误会了我......当你使用地图时,关键是直接指向数组中位置的索引 - 这将比数组上的任何查找方法更快.关于访问 JSON 属性的工作原理,我是否遗漏了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多