Javascript 将两个json对象数据合并为一个,json到新的单个json,
我对该对象的定义如下:Javascript 将两个json对象数据合并为一个,json到新的单个json,,javascript,jquery,arrays,json,object,Javascript,Jquery,Arrays,Json,Object,我对该对象的定义如下: var object = { "driver_data": [{ "slot": 0, "rideCount":98 }, { "slot": 30, "rideCount": 75 }, { "slot": 100, "rideCount": 0 }], "passenger_data": [{ "slot": 0, "rideCount":33 }, { "slot": 3
var object = {
"driver_data": [{
"slot": 0,
"rideCount":98
}, {
"slot": 30,
"rideCount": 75
}, {
"slot": 100,
"rideCount": 0
}],
"passenger_data": [{
"slot": 0,
"rideCount":33
}, {
"slot": 30,
"rideCount": 56
}, {
"slot": 100,
"rideCount": 37
}]
}
想要像这样转换:
[{"Slot":0,"passenger_data":98,"driver_data":33},
{"Slot":30,"passenger_data":75,"driver_data":56},
{"Slot":100,"passenger_data":0,"driver_data":37}
]
我试过了,但没用
var slot1=[],
德里德=[],
骄傲=[];
变量对象={
“驱动程序数据”:[{
“插槽”:0,
“rideCount”:98
}, {
“插槽”:30,
“rideCount”:75
}, {
“插槽”:100,
“rideCount”:0
}],
“乘客信息”:[{
“插槽”:0,
“rideCount”:33
}, {
“插槽”:30,
“rideCount”:56
}, {
“插槽”:100,
“rideCount”:37
}]
}
object.driver\u data.forEach(函数(键){
slot1.推(键.槽);
骄傲。推(键。rideCount)
});
object.passenger\u data.forEach(功能(键){
Dride.push(按键rideCount);
});
var myObj={},
myObj1={},
myObj2={},
monk=[‘插槽’、‘乘客数据’、‘驾驶员数据’];
var-arr=[];
对于(var i=0;i假设驾驶员数据
和乘客数据
的时隙
顺序相同,您可以映射驾驶员数据
,如下所示:
var obj={“驾驶员数据”:[{“时隙”:0,“行车帐户”:98},{“时隙”:30,“行车帐户”:75},{“时隙”:100,“行车帐户”:0}],“乘客数据”:[{“时隙”:0,“行车帐户”:33},{“时隙”:30,“行车帐户”:56},{“时隙”:100,“行车帐户”:37}
让output=obj.driver_data.map((d,index)=>({
插槽:插槽,
驱动程序数据:d.rideCount,
乘客数据:对象.乘客数据[索引].rideCount
}))
console.log(输出)
您可以像这样使用map
:
var object={“驱动程序数据”:[{“插槽”:0,“rideCount”:98},{“插槽”:30,“rideCount”:75},{“插槽”:100,“rideCount”:0}],“乘客数据”:[{“插槽”:0,“rideCount”:33},{“插槽”:30,“rideCount”:56},{“插槽”:100,“rideCount”:37};
var newObject=object.driver\u data.map(driver=>{
var passenger=object.passenger\u data.find(({slot})=>slot==driver.slot);
返回{
插槽:driver.slot,
乘客数据:passenger.rideCount,
驱动程序\u数据:driver.rideCount
}
});
console.log(newObject);
.as console wrapper{max height:100%!important;top:auto;}
您可以将带有插槽的插槽作为键并收集所需的属性
var data={driver_data:[{slot:0,rideCount:98},{slot:30,rideCount:75},{slot:100,rideCount:0}],passenger_data:[{slot:0,rideCount:33},{slot:30,rideCount:56},{slot:100,rideCount:37},
结果=数组。从(['驾驶员数据','乘客数据']
.减少(
(m,key)=>数据[key]。减少(
(n,{slot,rideCount})=>n.set(slot,Object.assign(
{slot},
n、 获取(插槽),
{[key]:rideCount}
)),
M
),
新地图
)
.values()
);
console.log(结果);
.as控制台包装{最大高度:100%!重要;顶部:0;}
var对象={
“驱动程序数据”:[{
“插槽”:0,
“rideCount”:98
}, {
“插槽”:30,
“rideCount”:75
}, {
“插槽”:100,
“rideCount”:0
}],
“乘客信息”:[{
“插槽”:0,
“rideCount”:33
}, {
“插槽”:30,
“rideCount”:56
}, {
“插槽”:100,
“rideCount”:37
}]
}
var driver_data=object.driver_data;
var乘客_数据=object.passenger乘客_数据;
var结果=[];
对于(var i=0;i而不是使用find更好地首先从两个数据中的任何一个创建一个地图或对象,因为在地图或对象上搜索具有O(1)复杂性
var对象={
“驱动程序数据”:[{
“插槽”:0,
“rideCount”:98
}, {
“插槽”:30,
“rideCount”:75
}, {
“插槽”:100,
“rideCount”:0
}],
“乘客信息”:[{
“插槽”:0,
“rideCount”:33
}, {
“插槽”:30,
“rideCount”:56
}, {
“插槽”:100,
“rideCount”:37
}]
}
let data=object.driver\u data.reduce((acc,curr)=>{
acc[当前时隙]=当前rideCount;
返回acc;
}, {});
let out=object.passenger\u data.map({slot,rideCount})=>({slot,passenger\u data:rideCount,driver\u data:data[slot]});
console.log(out)
您的问题中没有JSON。JSON是看起来像JS对象的文本。您有JS对象。
var object = {
"driver_data": [{
"slot": 0,
"rideCount":98
}, {
"slot": 30,
"rideCount": 75
}, {
"slot": 100,
"rideCount": 0
}],
"passenger_data": [{
"slot": 0,
"rideCount":33
}, {
"slot": 30,
"rideCount": 56
}, {
"slot": 100,
"rideCount": 37
}]
}
var driver_data = object.driver_data;
var passenger_data = object.passenger_data;
var result = [];
for(var i=0;i<driver_data.length;i++){
result.push({Slot:driver_data[i].slot,passenger_data:driver_data[i].rideCount,driver_data:passenger_data[i].rideCount});
}
console.log(result);