1

So I have the following JS code.

  const romanNumeral = {
    1000: "M",
    900: "CM",
    500: "D",
    400: "CD",
    100: "C",
    90: "XC",
    50: "L",
    40: "XL",
    10 : "X",
    9: "IX",
    5: "V",
    4: "IV",
    1: "I"
  }

  for (const key in romanNumeral) {
    console.log(romanNumeral[key])
  }

Why on earth does the loop start to output from the bottom entry of the object? This doesn't make any sense to me. Is the FOR IN loop implementing some kind of sorting when looping through entries?

yilkur
  • 31
  • 4
  • 2
    because of the rules of sorting properties in an object. in short: index like 32 bit integers first, then all others in insertstion order, at the end symbols. – Nina Scholz Apr 04 '21 at 08:47
  • 1
    Javascript dictionaries are not ordered. You can use an array for your task: ``` [ {decimal: "1000", roman:"M"}, ... ] ``` – tymtam Apr 04 '21 at 08:48
  • @tymtam that's what I actually ended up doing for this app. Still, I was very confused by this behaviour of JS. – yilkur Apr 04 '21 at 08:54

0 Answers0