Rognalf Skrevet 13. september 2017 Del Skrevet 13. september 2017 (endret) "a" er en array med heltall, hentet fra en tekststreng "b" (a.map(parseInt)) burde vel funke, siden "a" kun inneholder heltall, men jeg skjønner ikke hvorfor jeg får NaN her og der. Det er også flere av tallene i "b" som ikke finnes i "a" en gang. "c" (a.map(parseFloat)) funker derimot som jeg ville ha forventet, men hvorfor det? "a" består jo bare av heltall. var a = ["53", "22", "54", "3", "22", "1", "1", "94", "56", "64", "20", "4", "14", "27", "32", "17", "32", "22", "14", "8", "6", "11", "25", "21", "2", "27", "2", "11", "17", "21", "7", "10", "14", "15", "0", "9", "1"] var b = a.map(parseInt) var c = a.map(parseFloat) console.log("a: " + a) console.log("b: " + b) console.log("c: " + c) Output: a: ["53", "22", "54", "3", "22", "1", "1", "94", "56", "64", "20", "4", "14", "27", "32", "17", "32", "22", "14", "8", "6", "11", "25", "21", "2", "27", "2", "11", "17", "21", "7", "10", "14", "15", "0", "9", "1"] b: [53, NaN, NaN, NaN, 10, 1, 1, NaN, 46, 58, 20, 4, 16, 33, 44, 22, 50, 36, 22, 8, 6, 22, 49, 47, 2, 57, 2, 28, 35, 59, 7, 31, 36, 38, 0, 9, 1] c: [53, 22, 54, 3, 22, 1, 1, 94, 56, 64, 20, 4, 14, 27, 32, 17, 32, 22, 14, 8, 6, 11, 25, 21, 2, 27, 2, 11, 17, 21, 7, 10, 14, 15, 0, 9, 1] Endret 13. september 2017 av Rognalf Lenke til kommentar
Brattus Skrevet 13. september 2017 Del Skrevet 13. september 2017 Om du bruker var b = a.map(x => parseInt(x)) vil du få alle tallene https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map var a = ["53", "22", "54", "3", "22", "1", "1", "94", "56", "64", "20", "4", "14", "27", "32", "17", "32", "22", "14", "8", "6", "11", "25", "21", "2", "27", "2", "11", "17", "21", "7", "10", "14", "15", "0", "9", "1"] var b = a.map(x => parseInt(x)) var c = a.map(parseFloat) console.log("a: " + a) console.log("b: " + b) console.log("c: " + c) 1 Lenke til kommentar
Rognalf Skrevet 13. september 2017 Forfatter Del Skrevet 13. september 2017 (endret) Sneaky! Så når jeg ikke eksplisitt angir at det er ett parameter, blir a[1] tolket som radix-argumentet til parseInt(). I koden min ovenfor, hvis jeg endrer a[1] til 10, så får jeg faktisk forventet resultat. I artikkelen du henviser til ser jeg a.map(Number), som ser ut til å ha samme funksjon som a.map(parseFloat), bortsett fra at alle tegnene i tekststrengen må være sifre. Les mer: - http://www.wirfs-brock.com/allen/posts/166 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Tricky_use_case Endret 14. september 2017 av Rognalf Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå