Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中将一个JSON结构转换为另一个JSON结构_Javascript_Json - Fatal编程技术网

在JavaScript中将一个JSON结构转换为另一个JSON结构

在JavaScript中将一个JSON结构转换为另一个JSON结构,javascript,json,Javascript,Json,我在尝试将一个JSON结构转换为另一个JSON结构时遇到问题。如有任何回复,将不胜感激。我尝试了这个,并且能够完成它,并且研究了各种其他转换选项,但是我正在寻找实现它的最佳方法 // GIVEN { Monday: { Transactions: [ {Amount: 100, Status: "Cleared"}, {Amount: 200, Status: "Pending"}, {Amount: 300

我在尝试将一个JSON结构转换为另一个JSON结构时遇到问题。如有任何回复,将不胜感激。我尝试了这个,并且能够完成它,并且研究了各种其他转换选项,但是我正在寻找实现它的最佳方法

// GIVEN
{
  Monday: {
    Transactions: [
      {Amount: 100, Status: "Cleared"},
      {Amount: 200, Status: "Pending"},
      {Amount: 300, Status: "Failed"}
    ]
  },
  Tuesday: {
    Transactions: [
      {Amount: 700, Status: "Cleared"},
      {Amount: 800, Status: "Pending"},
      {Amount: 900, Status: "Failed"}
    ]
  },
  Wednesday: {
    Transactions: [
      {Amount: 400, Status: "Cleared"},
      {Amount: 500, Status: "Pending"},
      {Amount: 600, Status: "Failed"}
    ]
  }
}

// DESIRED RESULT
{
  Cleared: {
    Transactions: [
      {Amount: 100, Day: "Monday"},
      {Amount: 700, Day: "Tuesday"},
      {Amount: 400, Day: "Wednesday"}
    ]
  },
  Pending: {
    Transactions: [
      {Amount: 200, Day: "Monday"},
      {Amount: 800, Day: "Tuesday"},
      {Amount: 500, Day: "Wednesday"}
    ]
  },
  Failed: {
    Transactions: [
      {Amount: 300, Day: "Monday"},
      {Amount: 900, Day: "Tuesday"},
      {Amount: 600, Day: "Wednesday"}
    ]
  }
}

每当涉及到数据分组时,总是使用
reduce
方法

const given={星期一:{交易:[{金额:100,状态:“已清除”},{金额:200,状态:“待处理”},{金额:300,状态:“未通过”}},星期二:{交易:[{金额:700,状态:“已清除”},{金额:800,状态:“待处理”},{金额:900,状态:“未通过”}},星期三:{交易:[金额:400,状态:“已清除”},{金额:500,状态:“待定”},{金额:600,状态:“失败”}]};
const result=Object.entries(给定)。reduce((a,[天,v])=>{
v、 事务处理.forEach({Amount,Status})=>{
a[状态]??={Transactions:[]};
a[Status].Transactions.push({Day,Amount});
});
返回a;
},{});

console.log(结果);
尝试类似的操作:

输入={
星期一:{
交易:
[{金额:100,状态:“已清除”},
{金额:200,状态:“待定”},
{金额:300,状态:“失败”}]
},
星期二:{
交易:
[{金额:700,状态:“已清除”},
{金额:800,状态:“待定”},
{金额:900,状态:“失败”}]
},
星期三:{
交易:
[{金额:400,状态:“已清除”},
{金额:500,状态:“待定”},
{金额:600,状态:“失败”}]
}
}
输出={
已清除:{
交易:[]
},
待定:{
交易:[]
},
失败:{
交易:[]
}
}
for(输入中的const day){
for(输入的常量事务[天]。事务){
const status=事务处理状态;
输出[状态].Transactions.push({
金额:交易。金额,
天:天
});
}
}

您可以使用嵌套的
forEach
循环:

const input={星期一:{交易:[{金额:100,状态:“已清除”},{金额:200,状态:“待处理”},{金额:300,状态:“未通过”}},星期二:{交易:[{金额:700,状态:“已清除”},{金额:800,状态:“待处理”},{金额:900,状态:“未通过”}},星期三:{交易:[金额:400,状态:“已清除”},{金额:500,状态:“待定”},{金额:600,状态:“失败”}]}
常量输出={
已清除:{Transactions:[]},
挂起:{Transactions:[]},
失败:{事务:[]}
}
Object.keys(输入).forEach((天)=>{
输入[天].Transactions.forEach((事务)=>{
输出[transaction.Status].Transactions.push(事务)
})
})

console.log(输出)
请分享您尝试的解决方案,以便社区能够帮助您解决您面临的问题。这对我来说也是一件恼人的事情。您必须迭代。其次,我认为GitHub中有一个用于此的util库。不记得了。但您可以尝试类似的方法。Thnx,这对我有效!!Thnx,这个解决方案也对我有效!!Thnx,这对我有用!!