Toon posts:

[Javascript] Voorkomen van element tellen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het volgende: ik heb een array met verschillende waarden:
bv:

var kleuren = new Array("geel", "geel", "geel", "rood", "rood", "groen", "wit", "blauw");
Nu wil ik terugkrijgen hoevaak een kleur voorkomt in deze array, dus geel =3, rood=2, groen/wit/blauw=1.

Ik heb al wat geprobeerd met de 'in' functie:
for (i in x), maar nog zonder resultaat.

Iemand een tip?

[ Voor 13% gewijzigd door Verwijderd op 27-05-2008 15:30 ]


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Je wil een hash bijhouden. De keys van die hash zijn de elementen in je array, en de values zijn de aantallen van hoe vaak ze voorkomen.

Dan iterate je gewoon door je array heen en elke keer zet je de juiste value van die hash eentje hoger.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?
PRG >> WEB

En lees dan meteen even de Quickstart en scriptrequests. We zien hier namelijk graag wat je dan hebt geprobeerd (i.t.t. "Ik heb al wat geprobeerd met de 'in' functie"). Verder zou ik voortaan ook graag een topictitel zien die de lading dekt.

Titlechange: [Javascript] >> [Javascript] Voorkomen van element tellen

[ Voor 27% gewijzigd door RobIII op 27-05-2008 15:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 18-11 14:22

Koppensneller

winterrrrrr

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var result = "";

while(kleuren.length > 0)
{
   var huidigeKleur = kleuren[0];
   var kleurCount = 0;
   for(int i = 0; i < kleuren.length; i++)
   {
      if(kleuren[i] == huidigeKleur)
      {
         kleurCount++;
         kleuren.splice(i, 1);
      }
   }
   result = result + huidigeKleur + " = " + kleurCount + ", ";
}


Zoiets?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
a) werkt niet, je mist een i-- ergens ;)
b) we zijn hier doorgaans niet zo heel erg enthousiast over het van-voor-tot-achter voorkauwen van een oplossing ;) Onder het motto: "Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime"

[ Voor 22% gewijzigd door RobIII op 27-05-2008 15:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 18-11 14:22

Koppensneller

winterrrrrr

Ben niet zo thuis in de Javascript, had even snel wat opgezocht. Excuses voor het voorkauwen. Ik ben wel benieuwd wat er dan precies niet werkt...

Verwijderd

Topicstarter
@RobIII: ok, zal er in het vervolg op letten.
@orf: goeie site, maar het script werkt bij mij niet, lijkt of het niet in elke browser werkt, ik zit in IE7

[ Voor 55% gewijzigd door Verwijderd op 27-05-2008 15:48 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 11-11 10:24

Bosmonster

*zucht*

RobIII schreef op dinsdag 27 mei 2008 @ 15:43:
[...]

a) werkt niet
b) we zijn hier doorgaans niet zo heel erg enthousiast over het van-voor-tot-achter voorkauwen van een oplossing ;) Onder het motto: "Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime"
Oeh, diep hoor :+

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
KoppenSneller schreef op dinsdag 27 mei 2008 @ 15:45:
Ben niet zo thuis in de Javascript, had even snel wat opgezocht. Excuses voor het voorkauwen. Ik ben wel benieuwd wat er dan precies niet werkt...
Je iteratie klopt natuurlijk niet helemaal meer na de .splice() ;) Heb je het getest? Want dit is de output op jouw methode: "geel = 2, geel = 1, rood = 1, rood = 1, groen = 1, wit = 1, blauw = 1, "

[ Voor 16% gewijzigd door RobIII op 27-05-2008 15:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 18-11 14:22

Koppensneller

winterrrrrr

Inderdaad, dat had ik nog even gemist :) Nee, ik had het niet getest, maar het gaat natuurlijk ook nooit werken zo ;)

[ Voor 49% gewijzigd door Koppensneller op 27-05-2008 15:48 ]


Verwijderd

Topicstarter
@Roblll: "Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime" >> I agree

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 27 mei 2008 @ 15:49:
@Roblll: "Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime" >> I agree
Dan wens ik je veel plezier met KoppenSneller's functie. All you need to do is een i--; toevoegen op de juiste plek ;) Als je de code begrijpt (neem er wat references bij waar nodig) ben je er zo achter waar die i-- nog hoort ;)

[ Voor 17% gewijzigd door RobIII op 27-05-2008 15:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
ja thanks, gelukt!!!

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function countArray(chosen){
    var waarden = chosen;
    var som = new Array();
    while(waarden.length > 0){
        var tempCount = 0;
        var eerste = waarden[0];
        for(i = 0; i < waarden.length; i++)     {
            if(eerste == waarden[i])        {
             tempCount++;
            }           
         }
        waarden.splice(0, 1);
        if (!som[eerste])       {
            som[eerste] = tempCount;
            }
    } 
    for (var i in som) {
        if(som[i]>0 && i !=""){
            document.write( i + ' > ' + som[i]+"<br>");
            }
    }
}

[ Voor 2% gewijzigd door een moderator op 27-05-2008 18:21 . Reden: Code tags toegevoegd. ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Pssst: als je code post, gebruik dan code tags. Daarbij is de functie nu stukken ingewikkelder (ook al scheelt het niet zoveel, zeker met deze indentatie is het amper leesbaar); met een enkele i--; na regel 12 in KoppenSnellers functie was je er al geweest.
Desalniettemin wel blij dat je er zelf ook even wat moeite in hebt gestoken ;) d:)b

[ Voor 11% gewijzigd door RobIII op 27-05-2008 18:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

De oplossing lijkt wat lompjes... Ik zie overal kopieën gemaakt worden van vanalles, terwijl dat niet nodig is. Variabelen die geherdefinieerd worden, moeilijk leesbare loops... Ik zou zelf zoiets verzinnen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function groupCount(chosen) {
  var som = [], i;
  for (i = 0; i < chosen.length; i++) {
    if (som[chosen[i]]) {
      som[chosen[i]]++;
    }
    else {
      som[chosen[i]] = 1;
    }
  }
  return som;
}


syntax highlighting werkt dus niet altijd...

[ Voor 13% gewijzigd door _Thanatos_ op 27-05-2008 19:10 ]

日本!🎌


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
[b][message=30140352,noline]_Thanatos_ schreef op dinsdag 27 mei 2008 @
syntax highlighting werkt dus niet altijd...
[code=js] ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1