1

I have multiple json arrays inside an array. I need to sort the json arrays in ascending order by name first and item.

var result = [[{"name":"james","item":"car"....],[{"name":"adrian","item":"car"....}],[{"name":"adrian","item":"truck"...}]]

 result.sort(function(a, b) {
    return (a.name).localeCompare(b.name)  ||  (a.item).localeCompare(b.item);
});

Output desired: [ [{"name":"adrian","item":"car"}],[{"name":"adrian","item":"truck"}],[{"name":"james","item":"car"}] ]

2 Answers 2

2

I think you were close. Since it's arrays in array, use that

var result = [[{"name":"james","item":"car"}],[{"name":"adrian","item":"car"}],[{"name":"adrian","item":"truck"}]];

 result.sort(function(a, b) {
    return (a[0].name).localeCompare(b[0].name)  ||  (a[0].item).localeCompare(b[0].item);
});

And test result with :

console.log(JSON.stringify(result));

=>

[[{"name":"adrian","item":"car"}],[{"name":"adrian","item":"truck"}],[{"name":"james","item":"car"}]]
Sign up to request clarification or add additional context in comments.

Comments

1

Your arguments to sort function is an array. Please post complete sample to give you more accurate result. With the above sample below code will work.

        var result = [[{ "name": "james", "item": "car" }], [{ "name": "adrian", "item": "car" }], [{ "name": "adrian", "item": "truck" }]]

        result.sort(function (a, b) {
            return a[0].name.localeCompare(b[0].name) || a[0].item.localeCompare(b[0].item);
        });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.