I have an array of objects below
var inventory = [
{ Name: "KIT001", SerialNo: "K111", Status: "Out For Cleaning", NewStatus: "Cleaned" },
{ Name: "KIT001", SerialNo: "K112", Status: "Out For Cleaning", NewStatus: "Cleaned" },
{ Name: "KIT001", SerialNo: "K113", Status: "Out For Cleaning", NewStatus: "Cleaned" },
{ Name: "KIT001", SerialNo: "K132", Status: "Out For Cleaning", NewStatus: "Need Cleaning" },
{ Name: "KIT001", SerialNo: "K134", Status: "Out For Cleaning", NewStatus: "Need Cleaning" },
];
I would like to do a group by "Out For Cleaning" and "Cleaned" in such a way that the end result would return multiple arrays like below:
var arr1 = [
{ Name: "KIT001", SerialNo: "K111", Status: "Out For Cleaning", NewStatus: "Cleaned" },
{ Name: "KIT001", SerialNo: "K112", Status: "Out For Cleaning", NewStatus: "Cleaned" },
{ Name: "KIT001", SerialNo: "K113", Status: "Out For Cleaning", NewStatus: "Cleaned" },
];
var arr2 = [
{ Name: "KIT001", SerialNo: "K132", Status: "Out For Cleaning", NewStatus: "Need Cleaning" },
{ Name: "KIT001", SerialNo: "K134", Status: "Out For Cleaning", NewStatus: "Need Cleaning" },
];
UPDATE
I need to do a group by STATUS first and then NEW_STATUS. Note, that these arrays will be dynamic.
var STATUS = ["Out For Cleaning", "Out For Repair"];
var NEW_STATUS = ["Cleaned", "Repaired"];
This is what I came up with however, it only groups by the STATUS property.
for (var i = 0; i < STATUS.length; i++) {
var arr1 = inventory.filter(function (el) {
return el.Status == STATUS[i];
});
if(arr1.length > 0)
console.log('Final Array: ', arr1)
}