JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JavaScript Sorteer Skikkings


Sorteer 'n skikking

Die sort()metode sorteer 'n skikking alfabeties:

Voorbeeld

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

Omkeer van 'n skikking

Die reverse()metode keer die elemente in 'n skikking om.

Jy kan dit gebruik om 'n skikking in dalende volgorde te sorteer:

Voorbeeld

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

Numeriese Sorteer

By verstek sort()sorteer die funksie waardes as stringe .

Dit werk goed vir snare ("Apple" kom voor "Piesang").

As getalle egter as stringe gesorteer word, is "25" groter as "100", want "2" is groter as "1".

As gevolg hiervan sal die sort()metode verkeerde resultate lewer wanneer getalle gesorteer word.

U kan dit regstel deur 'n vergelykingsfunksie te verskaf :

Voorbeeld

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

Gebruik dieselfde truuk om 'n skikking afwaarts te sorteer:

Voorbeeld

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


Die Vergelyk funksie

Die doel van die vergelykingsfunksie is om 'n alternatiewe sorteervolgorde te definieer.

Die vergelykingsfunksie moet 'n negatiewe, nul of positiewe waarde terugstuur, afhangende van die argumente:

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

Wanneer die sort()funksie twee waardes vergelyk, stuur dit die waardes na die vergelykingsfunksie, en sorteer die waardes volgens die teruggekeerde (negatiewe, nul, positiewe) waarde.

As die resultaat negatief ais, word voor gesorteer b.

As die resultaat positief bis, word voor gesorteer a.

As die resultaat 0 is, word geen veranderinge met die sorteervolgorde van die twee waardes aangebring nie.

Voorbeeld:

Die vergelyk-funksie vergelyk al die waardes in die skikking, twee waardes op 'n slag (a, b).

Wanneer 40 en 100 vergelyk word, sort()roep die metode die vergelykingsfunksie (40, 100).

Die funksie bereken 40 - 100 (a - b), en aangesien die resultaat negatief is (-60), sal die sorteerfunksie 40 as 'n waarde laer as 100 sorteer.

Jy kan hierdie kodebrokkie gebruik om te eksperimenteer met numeriese en alfabetiese sortering:

<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>

Sorteer 'n skikking in ewekansige volgorde

Voorbeeld

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


Die Fisher Yates-metode

Die voorbeeld hierbo, array .sort(), is nie akkuraat nie, dit sal sommige getalle bo die ander bevoordeel.

Die gewildste korrekte metode, word die Fisher Yates-skuifel genoem, en is so vroeg as 1938 in datawetenskap bekendgestel!

In JavaScript kan die metode hierna vertaal word:

Voorbeeld

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * i)
  let k = points[i]
  points[i] = points[j]
  points[j] = k
}


Vind die hoogste (of laagste) skikkingswaarde

Daar is geen ingeboude funksies om die maksimum of min waarde in 'n skikking te vind nie.

Nadat jy egter 'n skikking gesorteer het, kan jy die indeks gebruik om die hoogste en laagste waardes te verkry.

Sorteer stygend:

Voorbeeld

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

Sorteer dalende:

Voorbeeld

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

Om 'n hele skikking te sorteer is 'n baie ondoeltreffende metode as jy net die hoogste (of laagste) waarde wil vind.


Gebruik Math.max() op 'n Array

Jy kan gebruik Math.max.applyom die hoogste getal in 'n skikking te vind:

Voorbeeld

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

Math.max.apply(null, [1, 2, 3])is gelykstaande aan Math.max(1, 2, 3).


Gebruik Math.min() op 'n Skikking

Jy kan gebruik Math.min.applyom die laagste getal in 'n skikking te vind:

Voorbeeld

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

Math.min.apply(null, [1, 2, 3])is gelykstaande aan Math.min(1, 2, 3).


My Min / Max JavaScript-metodes

Die vinnigste oplossing is om 'n "tuisgemaakte" metode te gebruik.

Hierdie funksie loop deur 'n skikking wat elke waarde vergelyk met die hoogste waarde wat gevind is:

Voorbeeld (Vind maksimum)

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

Hierdie funksie loop deur 'n skikking wat elke waarde vergelyk met die laagste waarde wat gevind is:

Voorbeeld (Vind Min)

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


Sorteer voorwerpskikkings

JavaScript-skikkings bevat dikwels voorwerpe:

Voorbeeld

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

Selfs as voorwerpe eienskappe van verskillende datatipes het, kan die sort()metode gebruik word om die skikking te sorteer.

Die oplossing is om 'n vergelykingsfunksie te skryf om die eiendomswaardes te vergelyk:

Voorbeeld

cars.sort(function(a, b){return a.year - b.year});

Om string eienskappe te vergelyk is 'n bietjie meer kompleks:

Voorbeeld

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;
});

Voltooi Skikkingsverwysing

Vir 'n volledige Array-verwysing, gaan na ons:

Voltooi JavaScript Array Reference .

Die verwysing bevat beskrywings en voorbeelde van alle Array-eienskappe en -metodes.

Toets jouself met oefeninge

Oefening:

fruitsGebruik die korrekte Skikking-metode om die skikking alfabeties te sorteer .

const fruits = ["Banana", "Orange", "Apple", "Kiwi"];
;