【问题标题】:Modify JSON array in Javascript在 Javascript 中修改 JSON 数组
【发布时间】:2019-02-24 07:25:12
【问题描述】:
MyJsonArray = 
[{quoteId: "MqWmJkUzcP", price: 211, userName: "Test"},{quoteId: "OqgFavcIiR", price: 230, userName: "Aglowid"},{quoteId: "MqWmJkUzcP", price: 120},
 {quoteId: "IFeiWnxMfq", price: 146, userName: "Test-2"},
 {quoteId: "pVL0CgIxaN", price: 155, userName: "Test-2"}]

我想要像这个数组一样唯一的 json 数组,并在其中创建价格数组,如下所示,quoteId 匹配

输出

[{quoteId: "MqWmJkUzcP", price:[211,120], userName: "Test"},
 {quoteId: "OqgFavcIiR", price: 230, userName: "Aglowid"},
 {quoteId: "IFeiWnxMfq", price: 146, userName: "Test-2"},
 {quoteId: "pVL0CgIxaN", price: 155, userName: "Test-2"}]

抱歉打字和语法错误,因为我是从手机上问这个问题的

【问题讨论】:

  • 真的希望price 有时是一个数组,有时是一个数组吗?您应该考虑将它们全部设为数组,其中一些只包含一个值。
  • 这通常可以通过一种称为“group by”的技术来完成,该技术是通过很多流行的实用程序函数库(例如 lodash/underscore)提供的。而且通过Array.prototype.reduce方法实现起来也不难。
  • 发布的问题似乎根本没有包含any attempt 来解决问题。 StackOverflow 期待您 try to solve your own problem first,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试过的内容,以说明您在minimal reproducible example 中遇到的特定问题。欲了解更多信息,请参阅How to Ask 并拨打tour

标签: javascript json typescript


【解决方案1】:

这就是你在纯 javascript (es6) 中的做法

const mergePrice = data => data.reduce((result, val) => {
   const { quoteId, price, userName } = val;
   let obj = result.find(o => o.quoteId === quoteId);
   if (!obj) {
       obj = { quoteId, userName, price: [] };
       result.push(obj);
   }
   obj.price.push(price);
   return result;
}, []);

const merged = mergePrice([{quoteId: "MqWmJkUzcP", price: 211, userName: "Test"},{quoteId: "OqgFavcIiR", price: 230, userName: "Aglowid"},{quoteId: "MqWmJkUzcP", price: 120},
 {quoteId: "IFeiWnxMfq", price: 146, userName: "Test-2"},
 {quoteId: "pVL0CgIxaN", price: 155, userName: "Test-2"}]);
 
 console.log(merged);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多