gpt4 book ai didi

javascript - 在下划线 groupBy 之后加入或合并 json 对象

转载 作者:行者123 更新时间:2023-11-28 16:08:44 24 4
gpt4 key购买 nike

我在当前项目中使用 underscore.js,它有一个很好的 _.groupBy 方法。

这以这种格式对我的数组进行分组。

var obj1 ={
'0':[{ ... json object...},{ ... json object...},{ ... json object...}],
'1':[{ ... json object...},{ ... json object...},{ ... json object...}],
'2':[{ ... json object...},{ ... json object...},{ ... json object...}]
}

var obj2 = {
'0':[{ ... another json object...},{ ...another json object...}],
'1':[{ ... another json object...},{ ...another json object...}],
'2':[{ ... another json object...},{ ... another json object...}]
}

现在我想加入/合并/扩展它们...但是_.extend并没有像我期望的那样工作。

我的预期结果是

{'0':[{ ... json object...},{ ... json object...},{ ... json object...},{ ... another json object...},{ ...another json object...}],
'1':[{ ... json object...},{ ... json object...},{ ... json object...},{ ... another json object...},{ ...another json object...}],
'2':[{ ... json object...},{ ... json object...},{ ... json object...},{ ... another json object...},{ ... another json object...}]}

基本上,我需要根据 obj1obj2 的 json 键扩展数组,即使内部 json 对象不同。

基本上需要像 json 对象的 sql join 操作之类的东西...

所以任何帮助都会很棒......

最佳答案

好吧,由于没有出现 underscore.js 特定的答案,这里有一个通用的 JavaScript 答案:

要将 obj2 合并到 obj1,请循环遍历 obj2 的条目并将这些数组附加到 obj1< 上的等效数组,像这样:

var key, a1, a2;
for (key in obj2) {
if (obj2.hasOwnProperty(key)) {
a2 = obj2[key];
a1 = obj1[key];
if (a1) {
a1.push.apply(a1, a2); // Tricky, see below
}
else {
obj1[key] = a2;
}
}
}

obj2 合并到 obj1 中,并就地修改 obj1 的数组。如果 obj1 的相应槽中没有数组,它会重用 obj2 的数组。

Live Example | Source

关于那个“棘手”的地方:

a1.push.apply(a1, a2);

其作用是将a2 中的元素附加a1 的末尾。 Details on my blog ,但基本上,Array#push将元素添加到数组末尾,与您指定的参数一样多(例如,a.push(1, 2, 3) 推送 12 3 到数组上),以及 Function#apply调用函数,指定用作 this 的内容(第一个参数)以及要传递给它的参数(作为数组)(第二个参数)。

关于javascript - 在下划线 groupBy 之后加入或合并 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com