您建议采用哪两种方法?
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
可以是标签,例如
答案 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。