Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
将JSON转换为并行数组Javascript对象_Javascript - Fatal编程技术网

将JSON转换为并行数组Javascript对象

将JSON转换为并行数组Javascript对象,javascript,Javascript,我有一个独特的要求要解决。以下是来自虚拟数据集的elasticsearch响应,如您在结果中所见,意外和意外(日期)列,painted&preowned对于有实际值的行返回,而当列值为null时,字段本身不会出现在响应中,这是因为elasticsearch不会索引null列 无法索引或搜索空值。当字段设置为 null(或空数组或空值数组),它被视为 尽管该字段没有值 我想将此信息解析为一个Javascript对象,其中数据以并行数组的形式出现,其中每个数组表示一列,数组的索引表示给定行的值。 下

我有一个独特的要求要解决。以下是来自虚拟数据集的elasticsearch响应,如您在结果中所见,意外意外(日期)列,painted&preowned对于有实际值的行返回,而当列值为null时,字段本身不会出现在响应中,这是因为elasticsearch不会索引null列

无法索引或搜索空值。当字段设置为 null(或空数组或空值数组),它被视为 尽管该字段没有值

我想将此信息解析为一个Javascript对象,其中数据以并行数组的形式出现,其中每个数组表示一列,数组的索引表示给定行的值。 下面是我的代码,我使用Lodesh首先映射它,然后执行交互以获得结果

var rawData= _.map(data.result.[0].hits, h => h.row)

var primaryKeys=Object.keys(rawData[0].primaryKey);

var columns=Object.keys(rawData[0].columns);

var parsedData={}

for (var pkey of primaryKeys) { parsedData[pkey]=[] }

for (var column of columns) { parsedData[column]=[] }

for (var row of rawData) {
    for (var pkey of primaryKeys) {
        parsedData[pkey].push(row.primaryKey[pkey])
    }
    
    for (var column of columns) {
        parsedData[column].push(row.columns[column])
    }
}

console.log(parsedData);
这就是结果

{
  "car_registration_no": [
    "61123",
    "61124",
    "61125"
  ],
  "model": [
    "Nissan",
    "Nissan",
    "Nissan"
  ],
  "submodel": [
    "Saloon",
    "Saloon",
    "Saloon"
  ],
  "date_used": [
    1597017600000,
    1597017600000,
    1597017600000
  ]
}
在我的结果中,我丢失了列意外意外(日期绘制&预拥有,因为并非所有行/主键都有这些列,我无法判断哪一行将有哪一列的值,因此,当一行没有其他行中的列时,如何迭代primaryKey的每一行并映射所有列,以便在该行的索引中为其生成空值

预期结果如下:

{
  "car_registration_no": [
    "61123",
    "61124",
    "61125"
  ],
  "model": [
    "Nissan",
    "Nissan",
    "Nissan"
  ],
  "submodel": [
    "Saloon",
    "Saloon",
    "Saloon"
  ],
  "painted": [
    "Yes",
    "null",              --> note this
    "null"
  ],
  "accidents": [
    "null",              --> note this
    "1",
    "null"
  ],
  "accidents_date": [
    "null",
    "12/12/2019",       --> note this
    "null"
  ],
  "preowned": [
    "null",
    "null",             --> note this
    "Yes"
  ],
  "date_used": [
    1597017600000,
    1597017600000,
    1597017600000
  ]
}

我对你在这里的申请一无所知。但是,最终,如果您的目标是提取数组对象,我认为我的答案可能有用

注意:这里我使用了您上面提到的字符串'null'。但是在进一步的计算中,使用null而不是null可能会有用

var数据={
结果:[
{
总点击数:3,
点击次数:[
{
方案:“adef89sesdceasjkmn5dlky6djj7kk189lkdqsc”,
基本版本:24,
行:{
primaryKey:{
车辆登记号码:“61123”
},
栏目:{
型号:“日产”,
子模型:“轿车”,
画:“是的”,
使用日期:1597017600000
},
编辑版本:0
},
突出显示:{}
},
{
方案:“adef89sesdceasjkmn5dlky6djj7kk189lkdqsc”,
基本版本:24,
行:{
primaryKey:{
车辆登记号码:“61124”
},
栏目:{
型号:“日产”,
子模型:“轿车”,
事故:“1”,
事故发生日期:2019年12月12日,
使用日期:1597017600000
},
编辑版本:0
},
突出显示:{}
},
{
方案:“adef89sesdceasjkmn5dlky6djj7kk189lkdqsc”,
基本版本:24,
行:{
primaryKey:{
车辆登记号码:“61125”
},
栏目:{
型号:“日产”,
子模型:“轿车”,
“是的”,
使用日期:1597017600000
},
编辑版本:0
},
突出显示:{}
}
],
聚合:{},
nextPageToken:空
}
]
};
常量空数据={
车辆登记号:[],
型号:[],
子模型:[],
涂漆:[],
事故:[],
事故发生日期:【】,
优先拥有:[],
使用日期:[]
};
const emptyCheck=val=>val?val:'空';
const parsedData=data.result[0]。hits.reduce((pre,curr)=>{
常量{primaryKey,columns}=curr.row;
预登记车号按钮(主钥匙车号);
pre.model.push(清空检查(columns.model));
pre.submodel.push(清空检查(columns.submodel));
预涂。推(清空检查(柱。涂));
预防事故。推送(清空检查(列。事故));
事故前日期推送(清空检查(列.事故日期));
pre.preowned.push(清空检查(columns.preowned));
pre.date_used.push(清空检查(columns.date_used));
返回预处理;
},空数据);

console.log(parsedData)不幸的是,我的应用程序只能使用并行数组在表中显示数据。这非常有效。谢谢,现在我必须为所有可能出现的列创建一个列表,以确保没有遗漏任何列:)
{
  "car_registration_no": [
    "61123",
    "61124",
    "61125"
  ],
  "model": [
    "Nissan",
    "Nissan",
    "Nissan"
  ],
  "submodel": [
    "Saloon",
    "Saloon",
    "Saloon"
  ],
  "painted": [
    "Yes",
    "null",              --> note this
    "null"
  ],
  "accidents": [
    "null",              --> note this
    "1",
    "null"
  ],
  "accidents_date": [
    "null",
    "12/12/2019",       --> note this
    "null"
  ],
  "preowned": [
    "null",
    "null",             --> note this
    "Yes"
  ],
  "date_used": [
    1597017600000,
    1597017600000,
    1597017600000
  ]
}