V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qW7bo2FbzbC0
V2EX  ›  程序员

单键值对做成[{Name: xx, Value: yy},{Name:xx1,Value:yy1}]的形式还是直接{xx:yy,xx1:yy1}?

  •  
  •   qW7bo2FbzbC0 · 2020-06-04 15:43:14 +08:00 · 1766 次点击
    这是一个创建于 1636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,有点强迫症

    排除 key 重复的情况,这两种解决方案有什么区别吗?

    第 1 条附言  ·  2020-06-04 16:20:26 +08:00
    我暂时想到的是:
    1.取值的时候,{Name: Value: }形式需要多一步
    11 条回复    2020-06-05 09:43:12 +08:00
    linvon
        1
    linvon  
       2020-06-04 15:47:39 +08:00
    不应该分别对应某一个类型的多个实例和多种属性吗?
    qW7bo2FbzbC0
        2
    qW7bo2FbzbC0  
    OP
       2020-06-04 15:59:00 +08:00
    @linvon 就是遇到了这两种都可以的场景,但是纠结于用那个更合适点,一般是在代码内部交互,非面向外部 API
    faceRollingKB
        3
    faceRollingKB  
       2020-06-04 15:59:57 +08:00
    如果你需要频繁的使用某个 key‘查找的话,就用第二种啊
    rannnn
        4
    rannnn  
       2020-06-04 16:10:48 +08:00
    一个有序一个无序
    msg7086
        5
    msg7086  
       2020-06-04 16:12:03 +08:00
    冒号前面是 key 冒号后面是 value,你再帮他说一遍,你等于……(走错片场了

    一般用 2 就行了,如果 key 重复的话也可以用[[k1, v1], [k2, v2]]这样的结构。
    TomatoYuyuko
        6
    TomatoYuyuko  
       2020-06-04 16:12:13 +08:00
    第二种可能会遇到 {'12345':'abc'}这种情况,取起来会有点烦人
    ryncv
        7
    ryncv  
       2020-06-04 17:22:28 +08:00
    目前项目大量使用第二种,需要比较棘手的问题有两个:
    1.作为下拉框选项,遇到需要排序的场景比较难处理
    2.无法处理重名 key (永远不要相信 pm 的鬼话)
    imn1
        8
    imn1  
       2020-06-04 17:45:36 +08:00
    看业务流程,如果 name 本身是某个 object 的属性的话,还是用第一种吧,例如合并 dict 会比较容易
    如果这个键值对完全独立,跟其他对象毫无关系,那就随意
    banricho
        9
    banricho  
       2020-06-04 17:53:28 +08:00
    前者有序,后者无序
    前者查询方式更灵活,后者依赖 key 查询

    可控的轻量级的一般用前者,后者的扩展性会更好一些
    someonedeng
        10
    someonedeng  
       2020-06-04 23:15:43 +08:00
    `{xx:yy,xx1:yy1}` 好像见过不少前端吐槽这种的。。
    qW7bo2FbzbC0
        11
    qW7bo2FbzbC0  
    OP
       2020-06-05 09:43:12 +08:00
    @someonedeng 面向其他人的话,这里一般采用第一种的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1293 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:33 · PVG 07:33 · LAX 15:33 · JFK 18:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.