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?

3
  • 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. Commented Apr 4, 2021 at 8:47
  • 1
    Javascript dictionaries are not ordered. You can use an array for your task: ``` [ {decimal: "1000", roman:"M"}, ... ] ``` Commented Apr 4, 2021 at 8:48
  • @tymtam that's what I actually ended up doing for this app. Still, I was very confused by this behaviour of JS. Commented Apr 4, 2021 at 8:54

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.