给定两个对象数组,我如何找到所有包含“重叠”值的对象(例如本例中的价格)?
例如,给定数组 A 和数组 B,我如何找到“价格”完全匹配(例如 20、30)或包含在此重叠范围内(例如 20.45)的所有对象?
var A = [
{ "id" : 1, "price" : 50, "quantity": 2 },
{ "id" : 2, "price" : 40, "quantity": 2 },
{ "id" : 3, "price" : 30, "quantity": 2 }, // yes
{ "id" : 4, "price" : 20, "quantity": 2 } // yes
];
var B = [
{ "id" : 5, "price" : 30, "quantity": 2 }, // yes
{ "id" : 6, "price" : 20.45, "quantity": 2 }, // yes
{ "id" : 7, "price" : 20, "quantity": 2 }, // yes
{ "id" : 8, "price" : 10, "quantity": 2 },
{ "id" : 9, "price" : 5, "quantity": 2 }
];
// Goal
var C = [
{ "id" : 3, "price" : 30, "quantity": 2 }, // yes
{ "id" : 4, "price" : 20, "quantity": 2 } // yes
];
var D = [
{ "id" : 5, "price" : 30, "quantity": 2 }, // yes
{ "id" : 6, "price" : 20.45, "quantity": 2 }, // yes
{ "id" : 7, "price" : 20, "quantity": 2 }, // yes
];
我的目标是将它们分成自己的数组(C&D)。但如果最终结果需要是一个组合数组,那也没关系。我可能也可以完成这项工作。任何有效的东西都会让我现在很开心。
我试过下划线的交集。如果 A 和 B 是包含整数而不是对象的简单数组,则交集可以找到精确匹配项(例如 30 和 30、20 和 20),但它仍然不包括我也需要的 20.45。而且,当然,我有一个对象数组而不是简单的数组,这也让它变得有点困难。