【问题标题】:Manipulating an array of JSON objects操作 JSON 对象数组
【发布时间】:2020-05-25 21:09:25
【问题描述】:

长话短说,我有一个没有键的 JSON 对象数组。我试图通过 HTML 推送每个对象,但是,我有重复的数据,我想合并。我通过 AJAX 调用获取此数组,不确定是否应该在调用期间或之后实现某些内容。

我的数据如下所示:

myData =[{Title:'Test', Dates:'11/12/14-/n11/14/14', Code:'A1B2C3'},
         {Title:'Test', Dates:'10/12/14-/n10/14/14', Code:'D1E2F3'},
         {Title:'Test', Dates:'11/12/14-/n11/14/14', Code:'D1E2F3'},
         {Title:'Test2', Dates:'01/12/14-/n01/14/14', Code:'H1J2K3'}]

AJAX 看起来像这样:

$.ajax({
    url: ckURL,
    async: false,
    dataType: 'json',
    success: function(data) {
        myData= data;
    }
});

我希望 myData 看起来像:

myData =[Test:{Dates:['11/12/14-/n11/14/14','10/12/14-/n10/14/14'], Code:['A1B2C3','D1E2F3']},
         Test2:{Dates:'01/12/14-/n01/14/14', Code:'H1J2K3'}]

或者像这样:

myData =[{Title:'Test', Dates:['11/12/14-/n11/14/14','10/12/14-/n10/14/14'], Code:['A1B2C3','D1E2F3']},
         {Title:'Test2', Dates:'01/12/14-/n01/14/14', Code:'H1J2K3'}]

如果您知道如何解决这个问题,我们将不胜感激。感谢您阅读到此为止。

【问题讨论】:

  • 对如何创建一个 "groupBy" 对象进行一些研究,然后您可以对其进行迭代以生成最终的映射数组

标签: javascript jquery arrays json ajax


【解决方案1】:

您好,欢迎加入!

Mapreduce 是你的朋友。

这是一个如何到达您发布的第一个结构的示例:

myData.reduce((data, item) => {
  const d = data[item.Title];
  if (d) {
    d.Dates.push(item.Dates);
    d.Code.push(item.Code);
  } else {
    data[item.Title] = {
      Dates: [item.Dates],
      Code: [item.Code]
    };
  }
  return data;
}, {}); 

【讨论】:

  • 感谢您的回答!它有很大帮助。我将如何进行第二个结构?它会遵循相同的 Map 和 Reduce 函数吗?
  • Yes 会使用map()reduce() 生成第二个结构。看看文档,试试看,如果你不明白,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2021-07-06
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多