Javascript 合并复多维数组
在Javascript中,我创建了一个多维数组,但出于另一个目的,我需要转换它 所以我的数组是这样的Javascript 合并复多维数组,javascript,arrays,Javascript,Arrays,在Javascript中,我创建了一个多维数组,但出于另一个目的,我需要转换它 所以我的数组是这样的 array [ 0 => { "ulStatic": [ 0 => { "day": "2019-03-30 18:30:00" "id": "7" "origin": "intentions" } ] "ulDynamic": [ 0 => { "d
array [
0 => {
"ulStatic": [
0 => {
"day": "2019-03-30 18:30:00"
"id": "7"
"origin": "intentions"
}
]
"ulDynamic": [
0 => {
"day": "2019-03-30 18:30:00"
"id": "275"
"origin": "obs"
}
]
"ulCreatedDynamic": []
}
1 => {
"ulStatic": [
0 => {
"day": "2019-03-31 09:30:00"
"id": "8"
"origin": "intentions"
}
]
"ulDynamic": []
"ulCreatedDynamic": []
}
2 => {
"ulStatic": []
"ulDynamic": []
"ulCreatedDynamic": [
0 => {
"day": "2019-04-03 19:30:00"
"id": "277"
"origin": "obs"
}
]
}
]
我正在尝试使用这个数组:
array [
0 => {
"day": "2019-03-30 18:30:00"
"elements": [
0 => {
"id": "7"
"origin": "intentions"
}
1 => {
"id": "275"
"origin": "obs"
}
]
}
1 => {
"day": "2019-03-31 09:30:00"
"elements": [
0 => {
"id": "8"
"origin": "intentions"
}
]
}
2 => {
"day": "2019-04-03 19:30:00"
"elements": [
0 => {
"id": "277"
"origin": "obs"
}
]
}
]
我必须承认,我不知道从哪里开始。我正在寻找map()、splice()、concat(),但它让我感到困惑。
你能帮我提些建议吗
谢谢您可以通过迭代对象及其数组的值,按
天
对数据进行分组
var数组=[{ulStatic:[{day:“2019-03-30 18:30:00”,id:“7”,origin:“intentials”}],ulDynamic:[{day:“2019-03-30 18:30:00”,id:“275”,origin:“obs”},ulcreatedddynamic:[},{ulStatic:“2019-03-31 09:30:00”,id:“8”,origin:“intentials:“intentials”},ulDynamic:[],ulDynamic:[],ulCreatedDynamic:[{day:“2019-04-03 19:30:00”,id:“277”,来源:“obs”}]},
结果=数组。减少((r,o)=>{
对象
.价值观(o)
.forEach(a=>a.forEach({day,id,origin})=>{
var temp=r.find(p=>day==p.day);
if(!temp)r.push(temp={day,元素:[]});
临时元素推送({id,origin});
}));
返回r;
}, []);
控制台日志(结果)代码>
.as控制台包装{最大高度:100%!重要;顶部:0;}
let originalArr=[{
超静定:[
{
日期:“2019-03-30 18:30:00”,
id:'7',
来源:“意图”
}
],
ulDynamic:[
{
日期:“2019-03-30 18:30:00”,
id:'275',
来源:“obs”
}
],
ulCreatedDynamic:[]},{ulStatic:[
{
日期:2019-03-3109:30:00,
id:'8',
来源:“意图”
}
],
ulDynamic:[],
ulCreatedDynamic:[]},{ulStatic:[],,
ulDynamic:[],
ulCreatedDynamic:[
{
日期:2019-04-03 19:30:00,
id:'277',
来源:“obs”
}
]}];
让op=originalArr.map(项=>{
设ulStatic=item.ulStatic.map(ul=>{
返回{
id:ul.id,
原产地:ul原产地
};
});
设ulDynamic=item.ulDynamic.map(ul=>{
返回{
id:ul.id,
原产地:ul原产地
};
});
让ulCreatedDynamic=item.ulCreatedDynamic.map(ul=>{
返回{
id:ul.id,
原产地:ul原产地
};
});
让我们有一天;
如果(ulStatic.length>0){
天=项[0]。天;
}否则如果(ulDynamic.length>0){
天=项。ulDynamic[0]。天;
}否则如果(ulCreatedDynamic.length>0){
天=项。ulCreatedDynamic[0]。天;
}
返回{
天:天,
元素:[].concat(超静态)。concat(超动态)
};
});
控制台日志(op)代码>按天
对输入进行分组,并使用减少
返回对象值
常量输入=[{
“超静定”:[{
“日期”:“2019-03-30 18:30:00”,
“id”:“7”,
“起源”:“意图”
}],
“ulDynamic”:[{
“日期”:“2019-03-30 18:30:00”,
“id”:“275”,
“来源”:“obs”
}],
“ulCreatedDynamic”:[]
},
{
“超静定”:[{
“日期”:“2019-03-31 09:30:00”,
“id”:“8”,
“起源”:“意图”,
}],
“ulDynamic”:[],
“ulCreatedDynamic”:[]
},
{
“超静定”:[],
“ulDynamic”:[],
“ulCreatedDynamic”:[{
“日期”:“2019-04-03 19:30:00”,
“id”:“277”,
“来源”:“obs”
}]
}
];
const groupByDay=inputAry.reduce((组,静态)=>{
//展平静力学阵列
[].concat.apply([],Object.values(静态))
弗雷奇先生(({
白天
身份证件
起源
}) => {
//创建以日期为关键字的词典条目,如果已存在,请使用现有条目或创建新条目
组[日]=组[日]|{
白天
要素:[]
};
//将id和原点推送到元素
组[天].elements.push({
身份证件
起源
});
});
返回组;
}, {});
const expectedResult=Object.values(groupByDay);
console.log(expectedResult)代码>列表展平通常是一个reduce()操作,但这似乎是一个映射操作的转换