我有两个具有不同形状的数据结构,它们来自两个不同的 API。数据为JSON格式,语言为JavaScript。
数组1:
[ { "document" : { "html" : "some_html", "name" : "DOCUMENT_NAME_1" },
"tooltips" : [ { "html" : "some_html", "name" : "TASK_NAME_1" },
{ "html" : "some_html", "name" : "TASK_NAME_2" } ] },
{ "document" : { "html" : "some_html", "name" : "DOCUMENT_NAME_2" },
"tooltips" : [ { "html" : "some_html", "name" : "TASK_NAME_3" },
{ "html" : "some_html", "name" : "TASK_NAME_4" } ] }]
数组2:
[ [ { "name" : "TASK_NAME_1", "status" : "FINISHED" },
{ "name" : "TASK_NAME_2", "status" : "OPEN" } ],
[ { "name" : "TASK_NAME_3", "status" : "OPEN" },
{ "name" : "TASK_NAME_4", "status" : "FUTURE" } ] ]
数组 1 中的工具提示字段的元素包含与数组 2 的元素相同的“名称”。如何优雅地将数组 2 中的“状态”合并到数组 1 中的工具提示中?
我认为镜头可能是正确的答案,但我不确定,因为我从未使用过它们。
我知道可以使用嵌套迭代和更新数组 1 来解决这个问题。理想情况下,我正在寻找一种不修改现有数据结构的方法。
最佳答案
这有点复杂,但应该适合您
array2.forEach(function(tooltips){
tooltips.forEach(function(tooltip){
for (var i = 0; i < array1.length; i++) {
for (var j = 0; j < array1[i].tooltips.length; j++) {
var arr1Tooltip = array1[i].tooltips[j];
if(arr1Tooltip.name == tooltip.name)
arr1Tooltip.status = tooltip.status;
};
};
});
});
console.log(JSON.stringify(array1));
关于javascript - 合并两个不同形状的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651885/