这里我比较了对象的b1和b2数组,并将数据添加到新的数组b3中,一切都很好,但是在数组b3中,只想获取一次有id和没有id的数组,在这种情况下,在新的数组b3中获得重复的数组元素。
let b3 = [];
let idss;
let b1 = [
{ batchReferenceNo: '118', receivedQty: 1 },
{ batchReferenceNo: '120', receivedQty: 1 },
{ batchReferenceNo: '100', receivedQty: 1 },
];
let b2 = [
{ id: 1, batchReferenceNo: '118', receivedQty: 1 },
{ id: 3, batchReferenceNo: '120', receivedQty: 1 },
];
console.log(b2);
b1.forEach((bno1) => {
b2.forEach((bno2) => {
if (bno1.batchReferenceNo == bno2.batchReferenceNo) {
idss = bno2.id;
let c1 = {
id: idss,batchReferenceNo: bno1.batchReferenceNo,qty: bno1.receivedQty
};
b3.push(c1);
}
if (bno1.batchReferenceNo != bno2.batchReferenceNo) {
idss = '';
let c1 = {
id: idss,batchReferenceNo: bno1.batchReferenceNo,qty: bno1.receivedQty
};
b3.push(c1);
}
});
});
console.log(b3);
请帮我解决这个问题,提前谢谢。
let b3 = [];
let idss;
let b1 = [
{ batchReferenceNo: '118', receivedQty: 1 },
{ batchReferenceNo: '120', receivedQty: 1 },
{ batchReferenceNo: '100', receivedQty: 1 },
];
let b2 = [
{ id: 1, batchReferenceNo: '118', receivedQty: 1 },
{ id: 3, batchReferenceNo: '120', receivedQty: 1 },
];
console.log(b2);
b1.forEach((bno1) => {
b2.forEach((bno2) => {
if (bno1.batchReferenceNo == bno2.batchReferenceNo) {
idss = bno2.id;
let c1 = {
id: idss,batchReferenceNo: bno1.batchReferenceNo,qty: bno1.receivedQty
};
b3.push(c1);
}
if (bno1.batchReferenceNo != bno2.batchReferenceNo) {
idss = '';
let c1 = {
id: idss,batchReferenceNo: bno1.batchReferenceNo,qty: bno1.receivedQty
};
b3.push(c1);
}
});
});
console.log(b3);
发布于 2021-04-18 04:30:14
如果b2
是b1
的子集
从b2
数组中构造一个Map
,其中映射键是batchReferenceNo
,映射值是整个对象。现在,循环遍历b1
数组并查看当前对象是否在映射中,如果是,则添加相应的id
,如果否,则添加一个空字符串。
const
b1 = [{ batchReferenceNo: "118", receivedQty: 1 }, { batchReferenceNo: "120", receivedQty: 1 }, { batchReferenceNo: "100", receivedQty: 1 }],
b2 = [{ id: 1, batchReferenceNo: "118", receivedQty: 1 }, { id: 3, batchReferenceNo: "120", receivedQty: 1 }],
b2Map = new Map(b2.map((b) => [b.batchReferenceNo, b])),
res = b1.map((b) =>
b2Map.has(b.batchReferenceNo)
? { ...b, id: b2Map.get(b.batchReferenceNo).id }
: { ...b, id: "" }
);
console.log(res);
如果b2
不是b1
的子集
保留b2
的所有元素,并添加b1
中不在b2
中的元素。
const
b1 = [{ batchReferenceNo: "118", receivedQty: 1 }, { batchReferenceNo: "120", receivedQty: 1 }, { batchReferenceNo: "100", receivedQty: 1 }],
b2 = [{ id: 1, batchReferenceNo: "118", receivedQty: 1 }, { id: 3, batchReferenceNo: "120", receivedQty: 1 }],
b2Map = new Map(b2.map((b) => [b.batchReferenceNo, b])),
res = b1
.reduce(
(r, b) => (!b2Map.has(b.batchReferenceNo) && r.push({ ...b, id: "" }), r),
[]
)
.concat(b2);
console.log(res);
https://stackoverflow.com/questions/67145097
复制相似问题