Javascript:我应该将其定义为数组键还是对象属性?

时间:2016-10-18 03:26:06

标签: javascript arrays sorting

您建议采用哪两种方法?

let x1 = 
{
  "type1": [{"data":"data1"}, {"data":"data2"}], 
  "type2": [{"data":"data3"}, {"data":"data4"}], 
}

let x2 =
[
  {"data": "data1", "type": "type1"},
  {"data": "data2", "type": "type1"},
  {"data": "data3", "type": "type2"},
  {"data": "data4", "type": "type2"},
] 

let type = "type1";

我猜.forEach或.map可以同时适用于x1和x2,如下所示。

x1案例:

x1[type].forEach(obj => {...})

x2案例:

x2.filter(x2obj => x2obj.type === type).forEach(obj => {...})

谢谢!

更新:data可以是问题/答案对象,就像在论坛中一样,type可以是标签,例如

1 个答案:

答案 0 :(得分:1)

这实际上取决于您主要访问数据的方式。没有什么能阻止你以类似于x1的格式存储对x2中对象的引用:

let x2 =
[
  {"data": "data1", "type": "type1"},
  {"data": "data2", "type": "type1"},
  {"data": "data3", "type": "type2"},
  {"data": "data4", "type": "type2"},
] 
let  x1 = {};
for(let i = 0; i < x2.length; i++){
     let type = x2[i].type;
     if(!x1.hasOwnProperty(type)){
         x1[type] = [];
     }              
     x1[type].push(x2[i]);
}

x2更容易迭代每个元素并执行操作(即我上面迭代和转换它)。无论类型如何,都可以更轻松地对元素进行排序和过滤。

如果按类型访问数据,则x1更容易,即如果您想说出按类型分组的输出项目。

考虑如何使用数据。您将如何访问它应该可以帮助您确定它的结构。如何将数据分组到您的视图中?它是否一直按类型分类?如果不是那么可能是x2,如果它可能是x1。