首页 > 解决方案 > 访问对象数组中信息的最佳实践。[.find() vs. .filter() vs. 创建引用对象]

问题描述

有谁知道创建一个新的辅助对象或使用定位器方法 [如 .find() 或 .filter()] 来帮助将一组数据中的一些唯一标识符转换为它们所代表的名称是否更有效?

我正在使用一组对象来制作一张桌子;每个对象都包含要在表格的一行上显示的信息。

例子:

    // Data:
    [ { id: someCardIdxx,
        name: "card1",
        pos: 1,
        customFields: 
          [{ id: "1234",
             value: 32 },
          {  id: "4321",
             idValue: "876"}],
      },
      { //...x50 
      }
    ]  

要获取有关 customFields 的信息,我需要引用一种适用于整个列表的定义对象。它具有用于了解如何翻译自定义字段 id 和 idValue 的数据。

例子:

// Custom Field Definitions:
[ { id: "1234",
    type: "number",
    display: true,
    name: "Size",
  },
  { id: "4321",
    type: "list",
    display: true,
    name: "Color",
    options: 
       [{ id: "987",
          name: "Yellow"},
        { id: "876", 
          name: "Green"}]
   },
   { // ...x8
   }
]

在分析Data数组中的每个卡片对象时,我可以在orDefinitions的帮助下使用数组,但这意味着每次我想解释卡片时都要在数组中搜索一个对象。.find().filter()Definitions

如果我Definitions获取 customField 对象数组并将其转换为我可以引用的单个有组织的对象,是否会更好地进行优化?

最终目标可能是这样的,将字段 id 用作属性键:

// New Definitions Object: 
{ "1234": "Size",
  "4321": {
    "name": "Color",
    "options": {
      "987": "Yellow",
      "876": "Green"
    }
  },
  // ...x8
}

在创建对象后或通过在具有适当 id 的数组中找到它来将这些信息作为属性访问是否更快?通常最好使用这些策略中的哪一个(或其他)?

标签: javascriptarraysobjecttraversal

解决方案


我不确定这是关于最佳实践还是我的经验。从我的角度来看,您不应该构建您的应用程序数据模型来寻找数据提供者(后端)响应结构,而是寻找您的功能。

根据我的经验,只有在项目顺序很重要的情况下,您才应该将项目集合保存在数组中。如果每个项目都有唯一的标识符并且订单不计量,那么最好的选择是常规 Map(或 id 到值对象)

但无论如何,50个项目你可以用任何方式做,差异将是无形的


推荐阅读