"YJ" <sdf@dsf.sdf> writes:
> Jeg har f.eks. følgende streng:
>
> Pærer,10,Æbler,20
>
> Den vil jeg gerne have lavet om til en hash, så jeg kan skrive:
>
> alert (count["Pærer"]); // Result: 10
>
> (Kender ikke til hashes i Javascript, så syntaksen er nok forkert)
Der er ikke en "hash" i Javascript (eller et map, eller et associativt
array, eller hvad den struktur nu normalt hedder i det sprog man
bruger). Alle objekter kan til gengæld bruges som mappings fra
strenge til værdier, ved at tildele egenskaber til dem.
> Kan det gøres i et hug, eller skal jeg splitte den til et array og
> traversere den og bygge min hash derigennem?
Der skal traverseres, med mindre du ved det er en nyere browser der
kører, så kan du lave et hack der gør det kortere og grimmere[1] (så
lad være med det).
---
/*
* string: en komma-separeret liste af skiftevis nøglestrenge og værdier
* conv: en valgfri konvertering af værdier fra streng til det man skal bruge
*/
function stringToMap(string, conv) {
var strings = string.split(",");
var map = new Object();
for (var i = 0; i < strings.length; i+=2) {
var key = strings[i];
var value = strings[i+1];
map[key] = conv?conv(value):value;
}
return map;
}
---
I dit tilfælde:
var myMap = stringToMap("Pærer,10,Æbler,20",Number);
alert(myMap["Pærer"]+myMap["Æbler"]);
Held og lykke
/L
[1]
function stringToMap2(string,conv) {
var res = {};
string.replace(/([^,]+),([^,]+)(,|$)/g,
function(m,a,b){res[a]=conv?conv(b):b;});
return res;
}
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'