【发布时间】:2021-10-07 01:29:51
【问题描述】:
好的,所以我在 node.js 中有三个数组,每个数组大约有 65k 个对象。它们都共享一个 ID - PARCELID、SBL 和 SBL20 是相同的。我想将来自不同数组的对象组合成一个对象,然后将其推入最终数组。无论出于何种原因,我得到的输出包含 130k+ 个对象。这也是非常低效的,所以如果有更好的方法可以做到这一点,我全神贯注 - 我尝试使用 map() 虽然我只能比较两个数组,而不是三个。我还有第四个我想添加到组合中。
var final = new Array();
count=0
TaxParcels.forEach((TaxParcel) => {
TaxBills.forEach((TaxBill) => {
if (TaxParcel.PARCELID == TaxBill.SBL20) {
CodeEnforcements.forEach((CodeEnforcement) => {
if (TaxParcel.PARCELID == CodeEnforcement.SBL) {
parcel = {
ID: TaxParcel.PARCELID,
DETAILS: {
TaxParcel: TaxParcel,
TaxBill: TaxBill,
CodeEnforcement: CodeEnforcement,
},
};
final.push(parcel);
count++
}
});
}
});
});
console.log(final);
console.log(count)
【问题讨论】:
-
“无论出于何种原因,我得到的输出包含 130k+ 个对象。”:这意味着您在同一个输入数组中有重复的 ID 值。请提供样本(小的、虚拟的)输入,以及预期的输出。
-
可以确认没有重复的 ID 值。一旦我终于能够找到一个可以处理 200MB+ JSON 文件的 JSON 查看器,我发现它会将每个真实的语句推送到数组中四次。
-
如果您想对此进行解释,请展示一个可重现的案例(代码和数据)。
标签: javascript node.js arrays foreach compare