Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问对象数组中信息的最佳实践。[.find()vs.filter()vs.创建引用对象]_Javascript_Arrays_Object_Traversal - Fatal编程技术网

Javascript 访问对象数组中信息的最佳实践。[.find()vs.filter()vs.创建引用对象]

Javascript 访问对象数组中信息的最佳实践。[.find()vs.filter()vs.创建引用对象],javascript,arrays,object,traversal,Javascript,Arrays,Object,Traversal,有人知道创建一个新的helper对象或使用locator方法[like.find()或.filter()]来帮助将一组数据中的一些唯一标识符转换为它们所表示的名称是否更有效吗 我正在使用一个对象数组来创建一个表;每个对象都保存要显示在表的一行上的信息 例如: // Data: [ { id: someCardIdxx, name: "card1", pos: 1, customFields: [{ id: "1

有人知道创建一个新的helper对象或使用locator方法[like.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
   }
]
分析
数据
数组中的每个卡对象时,我可以借助
.find()
.filter()
使用
定义
数组,但这意味着每次我要解释卡时都要在
定义
数组中搜索对象

如果我将customField对象的
定义
数组转换为一个我可以引用的有组织的对象,优化效果会更好吗

最终目标可以是这样的,字段ID用作属性键:

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

在创建对象后,还是通过在具有适当id的数组中查找该信息来更快地将其作为属性访问?以下哪种策略(或其他策略)通常最适合使用?

我不确定这是关于最佳实践还是仅仅是我的经验。在我看来,构建应用程序数据模型时不应该考虑数据提供者(后端)响应结构,而应该考虑功能

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


但无论如何,对于50个项目,您可以以任何方式进行,差异将是不可见的

这取决于元素的数量。如果只有少数几个,从性能上看,这没有什么区别。如果有数千个元素使用一个对象,速度可能会更快。许多人不喜欢“最佳实践”问题,因为“最佳实践”几乎总是“根据您所处的情况做有意义的事情”。请注意,
find
返回数组的单个元素,而
filter
返回另一个数组。用例是完全不同的。包含要引用的信息的数组只有大约10个元素,所以我觉得如果我不想,我可能不需要创建额外的对象。谢谢你的澄清!通常的建议是在代码上下文中使用任何有意义的东西。如果存在性能问题,请稍后处理。如果您需要在数据结构中查找内容,可以对其进行组织,使其易于查找,或者添加索引以帮助快速查找。