怎么得到数组m 数组非写死的会变有没有通用的方法

  let left = [
    { id: 1, num: 1 },
    { id: 3, num: 3 }
  ]

  let right = [
    { id: 1, num: 11 },
    { id: 2, num: 12 }
  ]

// 怎么得到
let m  = [
{ id: 1, num: 11 },
{ id: 3, num: 3 }
]
阅读 1.5k
3 个回答

不太清楚你是用来做什么的,但是实现m我觉得最简单的方法是这样
分别取出来,按次序push进m数组

let left = [
  { id: 1, num: 1 },
  { id: 3, num: 3 }
];

let right = [
  { id: 1, num: 11 },
  { id: 2, num: 12 }
];

let m = [];

a = left[1]
b = right[0]

m.push(b)
m.push(a)

console.log(m);


var left = [
    { id: 1, num: 1 },
    { id: 3, num: 3 }
  ];

var right = [
    { id: 1, num: 11 },
    { id: 2, num: 12 }
  ];

var rightMap = right.reduce((acc,cur)=>(acc[cur.id]=cur,acc),{})

var res = left.map(item=>rightMap[item.id] || item);

结果

0: {id: 1, num: 11}
1: {id: 3, num: 3}

感觉上你是想先求left和right的并集,其中如果left和right中有同id的,以right的为准,如果有其它规则,则需要特殊处理,然后再抽取id=1和id=3的组成结果集。

var getM=function(lA,rA,mA){
    let rt=[];
    let OB={};
    for(let i=0;i<lA.length;i++){
        OB[lA[i]["id"]]=lA[i]["num"]
    }
    for(let i=0;i<rA.length;i++){
        OB[rA[i]["id"]]=rA[i]["num"]
    }
    for(let i=0;i<mA.length;i++){
        let tmp={"id":mA[i],"num":OB[mA[i]] }
        rt.push(tmp)
    }
    return rt;
}
let left = [
  { id: 1, num: 1 },
  { id: 3, num: 3 }
];

let right = [
  { id: 1, num: 11 },
  { id: 2, num: 12 }
];
console.log( getM( left, right, [1,3]) )
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题