JavaScript Sorting Arrays - W3Schools

Tutorials References Exercises Certificates Menu Search field × See More Sign In +1 Get Certified Upgrade Teachers Spaces Get Certified Upgrade Teachers Spaces My W3Schools Tutorials References Exercises Certificates Spaces Get Certified Plus Academy All our Services Logout ×

Tutorials

Tutorials filter input ×

HTML and CSS

Learn HTML Tutorial Reference Learn CSS Tutorial Reference Learn RWD Tutorial Learn Bootstrap Overview Learn W3.CSS Tutorial Reference Learn Sass Tutorial Reference Learn Colors Tutorial Reference Learn Icons Tutorial Reference Learn SVG Tutorial Reference Learn Canvas Tutorial Reference Learn Graphics Tutorial Learn UTF-8 and Emojis Reference Learn How To Tutorial

Data Analytics

Learn AI Tutorial Learn Generative AI Tutorial Learn ChatGPT-3.5 Tutorial Learn ChatGPT-4 Tutorial Learn Google Bard Tutorial Learn Machine Learning Tutorial Learn DSA Tutorial Learn Data Science Tutorial Learn NumPy Tutorial Learn Pandas Tutorial Learn SciPy Tutorial Learn Matplotlib Tutorial Learn Statistics Tutorial Learn Excel Tutorial Learn Google Sheets Tutorial

Web Building

Create a Website HOT! Create a Server NEW Where To Start Web Templates Web Statistics Web Certificates Web Development Introduction to Programming Introduction to HTML & CSS Code Editor Test Your Typing Speed Play a Code Game Cyber Security Accessibility Join our Newsletter

JavaScript

Learn JavaScript Tutorial Reference Learn React Tutorial Learn jQuery Tutorial Reference Learn Vue Tutorial Reference Learn Angular Tutorial Learn AngularJS Tutorial Reference Learn JSON Tutorial Reference Learn AJAX Tutorial Learn AppML Tutorial Reference Learn W3.JS Tutorial Reference

Web Building

Create a Website HOT! Create a Server NEW Where To Start Web Templates Web Statistics Web Certificates Web Development Introduction to Programming Introduction to HTML & CSS Code Editor Test Your Typing Speed Play a Code Game Cyber Security Accessibility Join our Newsletter

Backend

Learn Python Tutorial Reference Learn SQL Tutorial Reference Learn MySQL Tutorial Reference Learn PHP Tutorial Reference Learn Java Tutorial Reference Learn C Tutorial Reference Learn C++ Tutorial Reference Learn C# Tutorial Learn R Tutorial Learn Kotlin Tutorial Learn Rust Tutorial Learn Go Tutorial Learn Django Tutorial Reference Learn PostgreSQL Tutorial Learn TypeScript Tutorial Learn ASP Tutorial Reference Learn Node.js Tutorial Reference Learn Raspberry Pi Tutorial Learn Swift Tutorial Learn Git Tutorial Learn Bash Tutorial Learn MongoDB Tutorial Learn AWS Cloud Tutorial Learn XML Tutorial Reference

Data Analytics

Learn AI Tutorial Learn Generative AI Tutorial Learn ChatGPT-3.5 Tutorial Learn ChatGPT-4 Tutorial Learn Google Bard Tutorial Learn Machine Learning Tutorial Learn DSA Tutorial Learn Data Science Tutorial Learn NumPy Tutorial Learn Pandas Tutorial Learn SciPy Tutorial Learn Matplotlib Tutorial Learn Statistics Tutorial Learn Excel Tutorial Learn Google Sheets Tutorial

Web Building

Create a Website HOT! Create a Server NEW Where To Start Web Templates Web Statistics Web Certificates Web Development Introduction to Programming Introduction to HTML & CSS Code Editor Test Your Typing Speed Play a Code Game Cyber Security Accessibility Join our Newsletter ×

References

References filter input ×

HTML and CSS

HTML Tags Reference CSS Reference W3.CSS Reference Bootstrap 3 Reference Bootstrap 4 Reference Color Names Icons Reference SVG Reference Canvas Reference Sass Reference UTF-8 Charset Reference UTF-8 Emojis Reference

JavaScript

JavaScript Reference jQuery Reference Vue Reference Angular Reference JSON Reference AppML Reference W3.JS Reference

Backend

Python Reference SQL Reference MySQL Reference PHP Reference Java Reference C Reference C++ Reference Django Reference ASP Reference Node.js Reference XML Reference ×

Exercises

Excercises filter input ×

HTML and CSS

HTML Exercise Quiz CSS Exercise Quiz Bootstrap 3 Exercise Quiz Bootstrap 4 Exercise Quiz Bootstrap 5 Exercise Quiz

Data Analytics

DSA Exercise Quiz NumPy Exercise Quiz Pandas Exercise Quiz SciPy Exercise Quiz Excel Exercise What is an Exercise? What is a Quiz?

JavaScript

JavaScript Exercise Quiz React Exercise Quiz jQuery Exercise Quiz Vue Exercise Quiz Angular Exercise Quiz

Backend

Python Exercise Quiz SQL Exercise Quiz MySQL Exercise Quiz PHP Exercise Quiz Java Exercise Quiz C Exercise Quiz C++ Exercise Quiz C# Exercise Quiz R Exercise Quiz Kotlin Exercise Quiz Django Exercise Quiz Node.js Exercise Quiz PostgreSQL Exercise Quiz TypeScript Exercise Quiz Git Exercise Quiz Bash Exercise Quiz Go Exercise MongoDB Exercise

Data Analytics

DSA Exercise Quiz NumPy Exercise Quiz Pandas Exercise Quiz SciPy Exercise Quiz Excel Exercise What is an Exercise? What is a Quiz? ×

Certificates

Filter field for certifications ×

HTML and CSS

HTML Certificate Course CSS Certificate Course Bootstrap 3 Certificate Course Bootstrap 4 Certificate Course Bootstrap 5 Certificate

Data Analytics

DSA Certificate Data Analytics Course NumPy Certificate Course Pandas Certificate Course Excel Certificate Social Media Course What is a Certificate?

Programs

Full Access Best Value! Front End Certificate Course Web Dev. Certificate Course Web App Certificate Course Web Design Certificate Course

JavaScript

JavaScript Certificate Course React Certificate Course jQuery Certificate Course Vue Certificate

Programs

Full Access Best Value! Front End Certificate Course Web Dev. Certificate Course Web App Certificate Course Web Design Certificate Course

Programs

Full Access Best Value! Front End Certificate Course Web Dev. Certificate Course Web App Certificate Course Web Design Certificate Course

Backend

Python Certificate Course SQL Certificate Course MySQL Certificate PHP Certificate Course Java Certificate Course C Certificate C++ Certificate Course C# Certificate Course R Course Django Certificate NodeJS Certificate TypeScript Certificate Course XML Certificate Course Cyber Security Certificate Course Accessibility Certificate Course

Data Analytics

DSA Exam Data Analytics Course NumPy Course Pandas Course Excel Certificate Social Media Course What is a Certificate? ×

All Our Services

Dark mode Services filter input ×

W3Schools offers a wide range of services and products for beginners and professionals, helping millions of people everyday to learn and master new skills.

Free Tutorials

Enjoy our free tutorials like millions of other internet users since 1999

References

Explore our selection of references covering all popular coding languages

Create a Website

Create your own website with W3Schools Spaces - no setup required

Exercises

Test your skills with different exercises

Quizzes

Test yourself with multiple choice questions

Get Certified

Document your knowledge

Log in / Sign Up

Create an account to track your progress

League

Earn XP and climb the ranks with different challenges

Upgrade

Become a PLUS user and unlock powerful features (ad-free, hosting, support,..)

Where To Start

Not sure where you want to start? Follow our guided path

Code Editor (Try it)

With our online code editor, you can edit code and view the result in your browser

Videos

Learn the basics of HTML in a fun and engaging video tutorial

Templates

We have created a bunch of responsive website templates you can use - for free!

Web Hosting

Host your own website, and share it to the world with W3Schools Spaces

Create a Server

Create your own server using Python, PHP, React.js, Node.js, Java, C#, etc.

How To's

Large collection of code snippets for HTML, CSS and JavaScript

CSS Framework

Build fast and responsive sites using our free W3.CSS framework

Browser Statistics

Read long term trends of browser usage

Typing Speed

Test your typing speed

Color Picker

Use our color picker to find different RGB, HEX and HSL colors. A circular color wheel showing the gradation of colors in the spectrum

Code Game

W3Schools Coding Game! Help the lynx collect pine cones Lynx logo

Newsletter

Join our newsletter and get access to exclusive content every month

Emojis Reference

Check out our refererence page with all the emojis supported in HTML 😊

UTF-8 Reference

Check out our full UTF-8 Character reference

Community

Chat, Learn and Connect with Us on Discord

Teachers

Contact us about W3Schools Academy for educational institutions

For Businesses

Contact us about W3Schools Academy for your organization

Contact Us

About sales: [email protected] About errors: [email protected]

× HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING INTRO TO HTML & CSS BASH RUST

Basic JavaScript

JS Tutorial JS Tutorial JS Introduction JS Where To JS Output JS Syntax JS Syntax JS Statements JS Comments JS Variables JS Variables JS Let JS Const JS Types JS Operators JS Operators JS Arithmetic JS Assignment JS Comparisons JS If Conditions JS Conditional JS If JS If Else JS Ternary JS Switch JS Booleans JS Logical JS Loops JS Loops JS Loop for JS Loop while JS Break JS Continue JS Strings JS Strings JS String Templates JS String Methods JS String Search JS String Reference JS Numbers JS Numbers JS Number Methods JS Number Properties JS Number Reference JS Bitwise JS BigInt JS Functions Function Intro Function Parameters Function Expressions Function Arrows JS Objects Objects Object Properties Object Methods Object Display JS Scope JS Scope JS Code Blocks JS Hoisting JS Strict Mode JS Dates JS Dates JS Date Formats JS Date Get JS Date Set JS Date Methods JS Arrays JS Arrays JS Array Methods JS Array Search JS Array Sort JS Array Iterations JS Array Reference JS Array Const JS Sets JS Sets JS Set Methods JS Set Logic JS Set WeakSet JS Set Reference JS Maps JS Maps JS Map Methods JS Map WeakMap JS Map Reference JS Iterations JS Loops JS Iterables JS Iterators JS Generators JS Math JS Math JS Math Reference JS Math Random JS RegExp JS RegExp JS RegExp Flags JS RegExp Classes JS RegExp Metachars JS RegExp Assertions JS RegExp Quantifiers JS RegExp Patterns JS RegExp Objects JS RegExp Methods JS Data Types JS Data Types JS typeof JS toString() JS Type Conversion JS Errors JS Errors Intro JS Errors Silent JS Error Statements JS Error Object JS Debugging JS Events Intro to Events Mouse Events Keyboard Events Load Events Timing Events Manage Events JS Conventions JS Style Guide JS Best Practices JS Mistakes JS Performance JS References JS Keywords Reference JS Keywords Reserved JS Operator Reference JS Operator Precedence JS Versions JS Versions JS 2026 JS 2025 JS 2024 JS 2023 JS 2022 JS 2021 JS 2020 JS 2019 JS 2018 JS 2017 JS 2016 JS 2015 (ES6) JS 2009 (ES5) JS 1999 (ES3) JS IE / Edge JS History

JS Advanced

JS Functions Function Definitions Function this Function Invocation Function IIFE Function Call Function Apply Function Bind Function Closures Function Reference JS Objects Object Definitions Object Constructors Object this Object Destructuring Object Prototypes Object Iterations Object Management Object Get / Set Object Protection Object Reference JS Classes JS Classes JS Class Inheritance JS Class Static JS Asynchronous Control Flow Callbacks Asynchronous Promises Async/Await Reference JS Modules Modules Intro Modules Export Modules Import Modules Namespace Modules Dynamic JS Meta & Proxy Meta Programming Meta Reflect Meta Proxy Meta Reference JS Typed Arrays Typed Arrays Typed Methods Typed Reference Array Buffers DataViews JS Atomics JS HTML DOM DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM Forms DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists JS Windows JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies JS Web APIs Web APIs Intro Fetch API Geolocation API Web History API Web Pointer API Web Storage API Validation API Web Worker API JS AJAX AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications AJAX Examples JS JSON JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Parse JSON Stringify JSON Objects JSON Arrays JSON Server JSON PHP JSON HTML JSON JSONP JS jQuery jQuery Selectors jQuery HTML jQuery CSS jQuery DOM JS Graphics JS Graphics JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js JS Examples JS Examples JS HTML DOM JS HTML Input JS HTML Objects JS HTML Events JS Browser JS Editor JS Exercises JS Quiz JS Website JS Syllabus JS Study Plan JS Interview Prep JS Bootcamp JS Certificate JS Reference JavaScript Array Sort ❮ Previous Next ❯

Alphabetic Sort

Array sort() Array reverse() Array toSorted() Array toReversed() Sorting Objects

Numeric Sort

Numeric Sort Random Sort Math.min() Math.max() Home made Min() Home made Max()

Complete JavaScript Array Reference

See Also:

Array Tutorial

Array Basic Methods

Array Search Methods

Array Iteration Methods

Array Reference

Sorting an Array

The sort() method sorts an array alphabetically:

Example

const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); Try it Yourself »

Reversing an Array

The reverse() method reverses the elements in an array:

Example

const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.reverse(); Try it Yourself »

By combining sort() and reverse(), you can sort an array in descending order:

Example

const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); fruits.reverse(); Try it Yourself »

JavaScript Array toSorted() Method

ES2023 added the toSorted() method as a safe way to sort an array without altering the original array.

The difference between toSorted() and sort() is that the first method creates a new array, keeping the original array unchanged, while the last method alters the original array.

Example

const months = ["Jan", "Feb", "Mar", "Apr"]; const sorted = months.toSorted(); Try it Yourself »

JavaScript Array toReversed() Method

ES2023 added the toReversed() method as a safe way to reverse an array without altering the original array.

The difference between toReversed() and reverse() is that the first method creates a new array, keeping the original array unchanged, while the last method alters the original array.

Example

const months = ["Jan", "Feb", "Mar", "Apr"]; const reversed = months.toReversed(); Try it Yourself »

Numeric Sort

By default, the sort() function sorts values as strings.

This works well for strings ("Apple" comes before "Banana").

If numbers are sorted as strings, "25" is bigger than "100", because "2" is bigger than "1".

Because of this, the sort() method will produce incorrect result when sorting numbers.

You can fix this by providing a compare function:

Example

const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); Try it Yourself »

Use the same trick to sort an array descending:

Example

const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); Try it Yourself »

The Compare Function

The purpose of the compare function is to define an alternative sort order.

The compare function should return a negative, zero, or positive value, depending on the arguments:

function(a, b){return a - b}

When the sort() function compares two values, it sends the values to the compare function, and sorts the values according to the returned (negative, zero, positive) value.

If the result is negative, a is sorted before b.

If the result is positive, b is sorted before a.

If the result is 0, no changes are done with the sort order of the two values.

Example:

The compare function compares all the values in the array, two values at a time (a, b).

When comparing 40 and 100, the sort() method calls the compare function(40, 100).

The function calculates 40 - 100 (a - b), and since the result is negative (-60), the sort function will sort 40 as a value lower than 100.

You can use this code snippet to experiment with numerically and alphabetically sorting:

<button onclick="myFunction1()">Sort Alphabetically</button><button onclick="myFunction2()">Sort Numerically</button><p id="demo"></p> <script>const points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points;function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points;}function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points;} </script> Try it Yourself »

Sorting an Array in Random Order

Using a sort function, like explained above, you can sort an numeric array in random order

Example

const points = [40, 100, 1, 5, 25, 10]; points.sort(function(){return 0.5 - Math.random()});

Try it Yourself »

The Fisher Yates Method

The points.sort() method in the example above is not accurate. It will favor some numbers over others.

The most popular correct method, is called the Fisher Yates shuffle, and was introduced in data science as early as 1938!

In JavaScript the method can be translated to this:

Example

const points = [40, 100, 1, 5, 25, 10]; for (let i = points.length -1; i > 0; i--) { let j = Math.floor(Math.random() * (i+1)); let k = points[i]; points[i] = points[j]; points[j] = k;}

Try it Yourself »

Find the Lowest (or Highest) Array Value

There are no built-in functions for finding the max or min value in an array.

To find the lowest or highest value you have 3 options:

  • Sort the array and read the first or last element
  • Use Math.min() or Math.max()
  • Write a home made function

Find Min or Max with sort()

After you have sorted an array, you can use the index to obtain the highest and lowest values.

Sort Ascending:

Example

const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // now points[0] contains the lowest value // and points[points.length-1] contains the highest value Try it Yourself »

Sort Descending:

Example

const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // now points[0] contains the highest value // and points[points.length-1] contains the lowest value Try it Yourself »

Note

Sorting a whole array is a very inefficient method if you only want to find the highest (or lowest) value.

Using Math.min() on an Array

You can use Math.min.apply to find the lowest number in an array:

Example

function myArrayMin(arr) { return Math.min.apply(null, arr);}

Try it Yourself »

Math.min.apply(null, [1, 2, 3]) is equivalent to Math.min(1, 2, 3).

Using Math.max() on an Array

You can use Math.max.apply to find the highest number in an array:

Example

function myArrayMax(arr) { return Math.max.apply(null, arr);}

Try it Yourself »

Math.max.apply(null, [1, 2, 3]) is equivalent to Math.max(1, 2, 3).

JavaScript Array Minimum Method

There is no built-in function for finding the lowest value in a JavaScript array.

The fastest code to find the lowest number is to use a home made method.

This function loops through an array comparing each value with the lowest value found:

Example (Find Min)

function myArrayMin(arr) { let len = arr.length; let min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min;}

Try it Yourself »

JavaScript Array Maximum Method

There is no built-in function for finding the highest value in a JavaScript array.

The fastest code to find the highest number is to use a home made method.

This function loops through an array comparing each value with the highest value found:

Example (Find Max)

function myArrayMax(arr) { let len = arr.length; let max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max;}

Try it Yourself »

Sorting Object Arrays

JavaScript arrays often contain objects:

Example

const cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];

Even if objects have properties of different data types, the sort() method can be used to sort the array.

The solution is to write a compare function to compare the property values:

Example

cars.sort(function(a, b){return a.year - b.year}); Try it Yourself »

Comparing string properties is a little more complex:

Example

cars.sort(function(a, b){ let x = a.type.toLowerCase(); let y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0;}); Try it Yourself »

Stable Array sort()

ES2019 revised the Array sort() method.

Before 2019, the specification allowed unstable sorting algorithms such as QuickSort.

After ES2019, browsers must use a stable sorting algorithm:

When sorting elements on a value, the elements must keep their relative position to other elements with the same value.

Example

const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ]; Try it Yourself »

In the example above, when sorting on price, the result is not allowed to come out with the names in an other relative position like this:

X01 100 X03 100 X00 100 X02 100 X05 110 X04 110 X06 110 X07 110

Complete JavaScript Reference

For a complete reference to all JavaScript properties and methods, with full descriptions and many examples, go to:

W3Schools' Full JavaScript Reference.

The reference inludes all JavaScript updates from 1999 to 2025.

❮ Previous Next ❯ +1 Sign in to track progress Get Certified Offer

COLOR PICKER

colorpicker

REMOVE ADS

PLUS SPACES GET CERTIFIED FOR TEACHERS FOR BUSINESS CONTACT US ×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:[email protected]

Top Tutorials
HTML Tutorial CSS Tutorial JavaScript Tutorial How To Tutorial SQL Tutorial Python Tutorial W3.CSS Tutorial Bootstrap Tutorial PHP Tutorial Java Tutorial C++ Tutorial jQuery Tutorial
Top References
HTML Reference CSS Reference JavaScript Reference SQL Reference Python Reference W3.CSS Reference Bootstrap Reference PHP Reference HTML Colors Java Reference AngularJS Reference jQuery Reference
Top Examples
HTML Examples CSS Examples JavaScript Examples How To Examples SQL Examples Python Examples W3.CSS Examples Bootstrap Examples PHP Examples Java Examples XML Examples jQuery Examples
Get Certified
HTML Certificate CSS Certificate JavaScript Certificate Front End Certificate SQL Certificate Python Certificate PHP Certificate jQuery Certificate Java Certificate C++ Certificate C# Certificate XML Certificate FORUM ABOUT ACADEMY W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookies and privacy policy. Copyright 1999-2025 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS. -->

Tag » How To Sort An Array In Java