[javascript] meest voorkomende value in een Array

Pagina: 1
Acties:

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
ik heb een array met een daarin een aantal waarden (kunnen vele zijn) en daaruit wil ik de meest voorkomende weten. Dus bijvoorbeeld
code:
1
var waarden = new Array(10, 12, 33, 44, 12, 33, 12, 44, 10);

daarin komt 12 dus 3 keer voor. Maar de inhoud van de array zal variabel zijn, dus hoe kan ik nou het beste daaruit bepalen welke waarde het vaakst voorkomt? :? ik dacht als volgt maar dat werkt niet
code:
1
2
3
4
5
6
7
8
var i;
var tmp_string;
var tmp_count_values = new Array();
for (i = 0; i < waarden . length; ++ i)
{
  tmp_string = 'test' + waarden [i];
  tmp_count_values [tmp_string] = tmp_count_values [tmp_string] + 1;
}

dat met dat tmp_string = 'test' + waarden (i) is gedaan omdat ik dacht dat je in javascript de elementen van de array tmp_count_values ook kan aanspreken met een soort key (een string) ipv een getal (index) maar goed het werkt niet want uiteindelijk is de array leeg tmp_count_values.length is 0..

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:34

crisp

Devver

Pixelated

Zo dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var waarden = new Array(10, 12, 33, 44, 12, 33, 12, 44, 10);
var tmp_count_values = new Array();
for (var i = 0; i < waarden . length; ++ i)
{
  if (tmp_count_values [waarden[i]]) tmp_count_values [waarden[i]]++;
  else tmp_count_values [waarden[i]] = 1;
}
var max = 0;
var index = 0;
for (i in tmp_count_values)
{
  if (tmp_count_values[i] > max)
  {
    index = i;
    max = tmp_count_values[i];
  }
}
alert('getal ' + index + ' komt ' + max + ' keer voor');

Intentionally left blank


  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
jaaaa, goed man! bedankt

trouwens: hoe kan ik het beste javascript debuggen? ik bewerk nu steeds in notepad (of ultraedit) en probeer het steeds uit met IE, en ik vraag af en toe wel wat uit via de alert functie. Maar dat is nogal lastig, is er geen syntax checker of compiler-achtig iets? De foutmeldingen waar IE mee komt kan ik niet zoveel mee, vaak kloppen ze ook niet.. bijvoorbeeld:

"Regel: 11
Teken: 2
Object verwacht"

als ik dan kijk op regel 11 is er niks mis, achteraf blijkt vaak de fout op een compleet andere regel te zitten :{

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 09-09 15:29

MAZZA

Barbie is er weer!

Op zondag 31 maart 2002 14:09 schreef BdR het volgende:
jaaaa, goed man! bedankt

trouwens: hoe kan ik het beste javascript debuggen?
Mozilla heeft een goede javascript debugger.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:34

crisp

Devver

Pixelated

Op zondag 31 maart 2002 15:10 schreef MAZZA het volgende:

[..]

Mozilla heeft een goede javascript debugger.
yep.
En als aanvulling op de alert functie gebruik ik vaak ook window.status om tijdens het runnen dingen weer te geven (muispositie bijvoorbeeld).

Intentionally left blank


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

je kan ook een functie aan de onerror hangen:
code:
1
2
3
4
5
6
window.onerror = handleError

function handleError(msg,file,line) {
    alert('ERROR\n\n'+msg+'\n'+file+'\nline '+line)
    return true;
}

maar dat helpt nog steeds niet echt in IE, omdat de file gewoon altijd je main file is, en nooit een include, en de linenumber altijd 1 te ver (oid).

Wat je ook kan doen is een try {} catch (e){}:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function doSomething() {
    try {
        woooot()
    } catch (e) {
        // error detected
        getProps('Error in "doSomething()"', e)
    }
}

doSomething()


// helper
function getProps(msg, obj) {
    var res = msg + '\n\n';
    for(var i in obj) {
        res += i+': '+obj[i]+'\n'
    }   alert(res)
}

dat probeert dat te doen wat er in het try blok staat, en als dat niet wil kom je in het exception blok waar dat argument e een error object is met een beschrijving van wat er fout is gegaan. Dat kan je uitlezen met een object properties scriptje.
(Werkt alleen niet in Ns4)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin

Pagina: 1