function sortObjects(arr) {
arr.sort(function(a, b) {
if (a.adviserid < b.adviserid) {
return -1;
} else if (a.adviserid > b.adviserid) {
return 1;
} else {
if (a.cutomer_id < b.cutomer_id) {
return -1;
} else if (a.cutomer_id > b.cutomer_id) {
return 1;
} else {
if (a.account_id < b.account_id) {
return -1;
} else if (a.account_id > b.account_id) {
return 1;
} else {
if (a.product_type === b.product_type) {
if (a.account_id > b.account_id) {
return -1;
} else if (a.account_id < b.account_id) {
return 1;
}
}
return 0;
}
}
}
});
// Group the array by adviserid
var groupedArr = [];
var currentAdviserId = null;
for (var i = 0; i < arr.length; i++) {
var obj = arr[i];
if (obj.adviserid !== currentAdviserId) {
currentAdviserId = obj.adviserid;
groupedArr.push([]);
}
groupedArr[groupedArr.length - 1].push(obj);
}
return groupedArr;
}
Here's how you would use this function:
// Example array of objects
var arr = [
{ adviserid: 1, cutomer_id: "abc", account_id: 10, product_type: "A" },
{ adviserid: 1, cutomer_id: "abc", account_id: 20, product_type: "A" },
{ adviserid: 1, cutomer_id: "def", account_id: 30, product_type: "B" },
{ adviserid: 2, cutomer_id: "ghi", account_id: 40, product_type: "A" }
];
// Call the function to sort the array
var sortedArr = sortObjects(arr);
// Print the sorted array
console.log(sortedArr);
In this example, the arr
array contains four objects with adviserid
, cutomer_id
, account_id
, and product_type
properties. The sortObjects
function sorts the array based on the three fields you specified (in ascending order), and then groups the sorted array by adviserid
. The sorted and grouped array is then printed to the console.
In the sorting logic, the function first sorts by adviserid
, then by cutomer_id
, and then by account_id
. If two objects have the same product_type
, they are sorted by account_id
in descending order. If two objects have the same adviserid
, they are grouped together in the output array.
Sure, here's an example JavaScript function that sorts an array of objects based on the three fields you specified:
function sortObjects(arr) {
arr.sort(function(a, b) {
if (a.adviserId < b.adviserId) {
return -1;
} else if (a.adviserId > b.adviserId) {
return 1;
} else {
if (a.priority < b.priority) {
return -1;
} else if (a.priority > b.priority) {
return 1;
} else {
if (a.accountId < b.accountId) {
return 1;
} else if (a.accountId > b.accountId) {
return -1;
} else {
return 0;
}
}
}
});
return arr;
}
// Example array of objects
var arr = [
{ adviserId: 2, priority: 1, accountId: 10 },
{ adviserId: 1, priority: 2, accountId: 20 },
{ adviserId: 1, priority: 2, accountId: 30 },
{ adviserId: 2, priority: 1, accountId: 40 }
];
// Print the input array
console.log("Input: ", arr);
// Call the function to sort the array
var sortedArr = sortObjects(arr);
// Print the sorted array
console.log("Output: ", sortedArr);
In this example, the arr
array contains four objects with adviserId
, priority
, and accountId
properties. The sortObjects
function sorts the array based on the three fields you specified, with priority being sorted in ascending order. If two objects have the same priority
, they are sorted by accountId
in descending order. The input and output arrays are then printed to the console.
The output of this function will be:
Input: [ { adviserId: 2, priority: 1, accountId: 10 },
{ adviserId: 1, priority: 2, accountId: 20 },
{ adviserId: 1, priority: 2, accountId: 30 },
{ adviserId: 2, priority: 1, accountId: 40 } ]
Output: [ { adviserId: 1, priority: 2, accountId: 30 },
{ adviserId: 1, priority: 2, accountId: 20 },
{ adviserId: 2, priority: 1, accountId: 40 },
{ adviserId: 2, priority: 1, accountId: 10 } ]