我是JavaScript的新手,并且一直在努力将对象组合在同一个数组中。 这就是我所拥有的:
var testList = [{
'taskList1': 'task1 for taskList1',
},
{
'taskList1': 'task2 for taskList1',
},
{
'taskList2': 'task1 for taskList2'
},
{
'taskList2': 'task2 for taskList2'
}]
以下数组是我真正希望从上面得到的:
var testList = [{
'taskList1': 'task1 for taskList1',
'taskList2': 'task1 for taskList2'
},
{
'taskList1': 'task2 for taskList1',
'taskList2': 'task2 for taskList2'
}]
有人可以帮助我将当前阵列转换为上面的阵列吗? 提前谢谢。
答案 0 :(得分:1)
在这种情况下,您的数据结构效率很低。我建议通过使用相同的对象数组来使其更好,但每个对象应包含itemName
和belongsTo
作为对任何集合的引用(在您的情况下 - {{1}你可以通过那里。
这是Codepen上更灵活的数据结构解决您的问题的方法 - https://codepen.io/Inlesco/pen/dReYgd
我还在下面的Codepen中添加了重组后的任务列表作为例子。
taskList
有很多方法可以解决这个问题。我刚刚添加了最简单的一个。
答案 1 :(得分:1)
您可以使用for语句在一个对象中重新组合具有相同taskList ID的对象。 当然,您需要为此使用正确的条件。 但最好的方法是@Denialos说,修改你的数据结构。
答案 2 :(得分:1)
根据我上面对该问题的评论,您所需的数据结构似乎已被颠倒,或者在内部"内部"。给定一个项目列表,以及每个项目的一组任务,我希望外部元素是列表,内部元素是任务集。
鉴于此,给定您的(当前)输入数据我会使用:
function restructure(taskList) {
var result = {};
for (var i = 0, n = taskList.length; i < n; ++i) {
// read current item
var item = taskList[i];
var key = Object.keys(item)[0];
var value = item[key];
// update the output
result[key] = result[key] || [];
result[key].push(value);
}
return result;
}
结果输出:
{
taskList1: [ 'task1 for taskList1', 'task2 for taskList1' ],
taskList2: [ 'task1 for taskList2', 'task2 for taskList2' ]
}
也就是说,您的输入数据模型也有些格式错误,每个数组元素都有一个未知密钥。您应该查看实际生成该数据的内容,并在可能的情况下解决该问题。