Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Node.js_Json - Fatal编程技术网

Javascript 排列json以匹配另一个json模板

Javascript 排列json以匹配另一个json模板,javascript,arrays,node.js,json,Javascript,Arrays,Node.js,Json,我收到了第一个JSON,我想更改它的结构,以便它与我的第二个JSON模板匹配 这是JSON,我想将其格式化为 以下是我到目前为止所做的: for(i=0;i<json.option.length;i++) { var row=json.option[i]; if(!option.includes(row.option.option_id)) { option.push({ option_id:row.option.optio

我收到了第一个JSON,我想更改它的结构,以便它与我的第二个JSON模板匹配

这是JSON,我想将其格式化为

以下是我到目前为止所做的:

for(i=0;i<json.option.length;i++)
{
    var row=json.option[i];

    if(!option.includes(row.option.option_id))
    {
        option.push({
            option_id:row.option.option_id,
            option_name:row.option.option_name,
            max:row.option.max,
            min:row.option.min,
            value:row.option.value,
            price:row.option.price
        })
    }


    if(!option_group.includes(row.option_group_id))
    {
        option_group.push({
            option_group_id:row.option_group_id,
            option_group_name:row.option_group_name,
            max:row.max,
            min:row.min,
            option:option
        })
    }
}
for(i=0;i这里有一个使用Ramda.js的解决方案

const数据={
项目编号:1065,
物品名称:“饮料”,
项目价格:1,
选项:[
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“小”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“中等”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“大”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:5,
分:0,,
选项:{
最高:1,
分:0,,
选项编号:3580,
选项名称:“无咖啡因”,
价格:0,,
价值:1
},
选项组id:“咖啡额外服务”,
选项组名称:“附加”
},
{
最高:5,
分:0,,
选项:{
最高:1,
分:0,,
选项编号:3581,
选项名称:“浓缩咖啡快照”,
价格:30,,
价值:1
},
选项组id:“咖啡额外服务”,
选项组名称:“附加”
}
],
数量/单位值:1
}
const transformGroup=(组)=>
右管(
R.mergeAll,
R.assoc(“期权”,R.Pull(“期权”,集团))
)(组)
常量转换选项=(选项)=>
右管(
R.groupBy(R.prop(“选项组id”),
R.map(转型集团),
R.价值观,
)(可选)
常量转换数据=(数据)=>
右管(
R.assoc(“期权集团”,转换期权(数据期权)),
R.dissoc(“期权”),
)(数据)
console.log(transformData(data))
这里有一个使用Ramda.js的解决方案
const数据={
项目编号:1065,
物品名称:“饮料”,
项目价格:1,
选项:[
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“小”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“中等”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:1,
民:1,,
选项:{
最高:1,
分:0,,
选项编号:3426,
选项名称:“大”,
价格:0,,
价值:1
},
选项组id:“饮料大小”,
选项组名称:“大小”
},
{
最高:5,
分:0,,
选项:{
最高:1,
分:0,,
选项编号:3580,
选项名称:“无咖啡因”,
价格:0,,
价值:1
},
选项组id:“咖啡额外服务”,
选项组名称:“附加”
},
{
最高:5,
分:0,,
选项:{
最高:1,
分:0,,
选项编号:3581,
选项名称:“浓缩咖啡快照”,
价格:30,,
价值:1
},
选项组id:“咖啡额外服务”,
选项组名称:“附加”
}
],
数量/单位值:1
}
const transformGroup=(组)=>
右管(
R.mergeAll,
R.assoc(“期权”,R.Pull(“期权”,集团))
)(组)
常量转换选项=(选项)=>
右管(
R.groupBy(R.prop(“选项组id”),
R.map(转型集团),
R.价值观,
)(可选)
常量转换数据=(数据)=>
右管(
R.assoc(“期权集团”,转换期权(数据期权)),
R.dissoc(“期权”),
)(数据)
console.log(transformData(data))

给定的输入和输出之间存在一些不一致:

  • 输入对象中缺少选项名称“搅打奶油”
  • 没有解释应如何更改/计算
    数量
    最小数量
    最大数量
下面是一个使用
array.reduce
array.map
Set
Object.assign
的解决方案。更多说明可在下面的代码中找到

输出json结构实际上是正确的,
qty
qty\u max
应该根据所需的标准进行计算,目前没有解释

const输入={
“项目名称”:“饮料”,
“项目识别号”:1065,
“量值”:1,
“项目价格”:1,
“选择”:[
{
“最大”:1,
“选择”:{
“min”:0,
“选项名称”:“小”,
“最大”:1,
“价格”:0,
“选项id”:3426,