【发布时间】:2021-09-28 09:05:23
【问题描述】:
我有以下两个数组:
var oldOrder = [{"Id": "10","Qty": 1}, {"Id": "3","Qty": 2}, {"Id": "9","Qty": 2}];
var newOrder = [{"Id": "5","Qty": 2},{"Id": "10","Qty": 3}, {"Id": "9","Qty": 1}];
我需要最终得到一个 newArray,每个 Id 只包含一个对象,但如果 oldOrder 数组和 newOrder 数组中的对象中的 id 则我需要得到 Qty 正数或负数的差异。因此,例如上面将创建这个新数组:
var newArray = [{"Id": "5","Qty": 2},{"Id": "10","Qty": 2}, {"Id": "9","Qty": -1}];
我还想获取 oldOrder 数组中存在但 newOrder 数组中不存在的已删除订单:
var droppedOrders = [{"Id": "3","Qty": 2}];
我已经有了这个逻辑来获取丢弃的订单,但我正在努力创建 newArray 并将逻辑绑定到同一个函数中(如果可能)?
function comparer(otherArray){
return function(current){
var onlyInOld = otherArray.filter(function(other){
return other.Id == current.Id;
}).length == 0;
return onlyInOld;
}
}
var droppedOrders= oldOrder.filter(comparer(newOrder));
console.log(droppedOrders);
编辑添加我不能使用 ESC6 功能,如展开或粗箭头等。
【问题讨论】:
标签: javascript arrays object