0
   var ItemList = {
        0:{name:"Cat%27s%20Pajamas",quality:"Unique"},
        1:{name:"C.A.P.P.E.R",quality:"Unique"},
        2:{name:"Head%20Prize",quality:"Unique"},
        3:{name:"Bedouin%20Bandana",quality:"Unique"},
        4:{name:"Spine-Chilling%20Skull",quality:"Unique"},
        5:{name:"Voodoo%20Juju",quality:"Unique"},
        6:{name:"Australium%20Blutsauger",quality:"Strange"},
        7:{name:"Australium%20Axtinguisher",quality:"Strange"},
        8:{name:"Australium%20SMG",quality:"Strange"},
        9:{name:"Australium%20Ambassador",quality:"Strange"},
        10:{name:"Australium%20Force-A-Nature",quality:"Strange"},
        11:{name:"Australium%20Black%20Box",quality:"Strange"},
        12:{name:"Australium%20Frontier%20Justice",quality:"Strange"},
        13:{name:"Australium%20Grenade%20Launcher",quality:"Strange"},
        14:{name:"Australium%20Knife",quality:"Strange"},
        15:{name:"Australium%20Stickybomb%20Launcher",quality:"Strange"},
        16:{name:"Dead%20Head",quality:"Unique"},
        17:{name:"Australium%20Flame%20Thrower",quality:"Strange"},
        18:{name:"Australium%20Tomislav",quality:"Strange"},
        19:{name:"Max%27s%20Severed%20Head",quality:"Unique"},
        20:{name:"Australium%20Minigun",quality:"Strange"},
        21:{name:"Australium%20Sniper%20Rifle",quality:"Strange"},
        22:{name:"Australium%20Scattergun",quality:"Strange"},
        23:{name:"Australium%20Rocket%20Launcher",quality:"Strange"},
        24:{name:"Towering%20Pillar%20of%20Summer%20Shades",quality:"Unique"},
        25:{name:"Australium%20Wrench",quality:"Strange"},
        26:{name:"Ghastlierest%20Gibus",quality:"Strange"},
        27:{name:"Australium%20Medi%20Gun",quality:"Strange"},
        28:{name:"Australium%20Eyelander",quality:"Strange"},
        29:{name:"Hat%20of%20Undeniable%20Wealth%20And%20Respect",quality:"Unique"}
    }

console.log(ItemList.length);

Basically I have this code with a list. What I trying to do is just print the length of that list. When I run in I get an error: Undefined main.js:34. What does that mean, like the list is defined so I don't see the problem. The 34th line is console.log(ItemList.length); any ideas?

  • 3
    JS objects do not have a `length` property. – lawrence-witt Mar 13 '21 at 00:27
  • 2
    You could use `Object.keys(ItemList).length` – Nick Mar 13 '21 at 00:30
  • @Nick TBH, seems more like OP needs to use an array, rather than a plain object – VLAZ Mar 13 '21 at 00:33
  • @VLAZ agreed, but for what they *have*, the duplicate is appropriate – Nick Mar 13 '21 at 00:35
  • @Nick what I'm trying to get at is that it seems like [an XY problem](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – VLAZ Mar 13 '21 at 00:43
  • @VLAZ ah, sorry, too early in the morning... but if, as you say, it is an XY problem, then this question should be closed and they should ask another question about how to make an array instead of an object. – Nick Mar 13 '21 at 00:48

1 Answers1

0

What you currently have is a javascript object. Only javascript arrays have the length property. However, you can easily convert it into an array like this:

var ItemList = {
  0: {
    name: "Cat%27s%20Pajamas",
    quality: "Unique"
  },
  1: {
    name: "C.A.P.P.E.R",
    quality: "Unique"
  },
  2: {
    name: "Head%20Prize",
    quality: "Unique"
  },
  3: {
    name: "Bedouin%20Bandana",
    quality: "Unique"
  },
  4: {
    name: "Spine-Chilling%20Skull",
    quality: "Unique"
  },
  5: {
    name: "Voodoo%20Juju",
    quality: "Unique"
  },
  6: {
    name: "Australium%20Blutsauger",
    quality: "Strange"
  },
  7: {
    name: "Australium%20Axtinguisher",
    quality: "Strange"
  },
  8: {
    name: "Australium%20SMG",
    quality: "Strange"
  },
  9: {
    name: "Australium%20Ambassador",
    quality: "Strange"
  },
  10: {
    name: "Australium%20Force-A-Nature",
    quality: "Strange"
  },
  11: {
    name: "Australium%20Black%20Box",
    quality: "Strange"
  },
  12: {
    name: "Australium%20Frontier%20Justice",
    quality: "Strange"
  },
  13: {
    name: "Australium%20Grenade%20Launcher",
    quality: "Strange"
  },
  14: {
    name: "Australium%20Knife",
    quality: "Strange"
  },
  15: {
    name: "Australium%20Stickybomb%20Launcher",
    quality: "Strange"
  },
  16: {
    name: "Dead%20Head",
    quality: "Unique"
  },
  17: {
    name: "Australium%20Flame%20Thrower",
    quality: "Strange"
  },
  18: {
    name: "Australium%20Tomislav",
    quality: "Strange"
  },
  19: {
    name: "Max%27s%20Severed%20Head",
    quality: "Unique"
  },
  20: {
    name: "Australium%20Minigun",
    quality: "Strange"
  },
  21: {
    name: "Australium%20Sniper%20Rifle",
    quality: "Strange"
  },
  22: {
    name: "Australium%20Scattergun",
    quality: "Strange"
  },
  23: {
    name: "Australium%20Rocket%20Launcher",
    quality: "Strange"
  },
  24: {
    name: "Towering%20Pillar%20of%20Summer%20Shades",
    quality: "Unique"
  },
  25: {
    name: "Australium%20Wrench",
    quality: "Strange"
  },
  26: {
    name: "Ghastlierest%20Gibus",
    quality: "Strange"
  },
  27: {
    name: "Australium%20Medi%20Gun",
    quality: "Strange"
  },
  28: {
    name: "Australium%20Eyelander",
    quality: "Strange"
  },
  29: {
    name: "Hat%20of%20Undeniable%20Wealth%20And%20Respect",
    quality: "Unique"
  }
}

console.log("Length: %o", Object.values(ItemList).length);
console.log(Object.values(ItemList));
Endothermic_Dragon
  • 1,042
  • 1
  • 11