Typeof question

why this is coming out as an object? let person = ["cheese", "hot"]; console.log(typeof person === "object"); <---- true console.log(this is any array? ${typeof person === "array"}); <---- false``
5 Replies
13eck
13eck2y ago
Because everything in JavaScript is an object :p Also, if you use three backticks (```) it'll give you code blocks (see #How To Ask Good Questions for more on codeblocks). More specifically, anything that's not considered a primitive data type is a typeof object. The following are primitive data types (those that are passed by value and not by reference) • stringnumberbigintbooleanundefinedsymbolnull If you want to know what exact type something is, you can use this snippet:
Object.prototype.toString.call("insert data here").slice(8, -1).toLowerCase()
Object.prototype.toString.call("insert data here").slice(8, -1).toLowerCase()
The Object.prototype.toString.call([data]) will give you [Object [Type]] and the slice grabs just the type and makes it lowercase.
Object.prototype.toString.call("insert data here").slice(8, -1).toLowerCase() // returns "string"
Object.prototype.toString.call([1,2,3]).slice(8, -1).toLowerCase() // returns "array"
Object.prototype.toString.call({hello: "world"}).slice(8, -1).toLowerCase() // returns "object"
// …etc, etc, etc
Object.prototype.toString.call("insert data here").slice(8, -1).toLowerCase() // returns "string"
Object.prototype.toString.call([1,2,3]).slice(8, -1).toLowerCase() // returns "array"
Object.prototype.toString.call({hello: "world"}).slice(8, -1).toLowerCase() // returns "object"
// …etc, etc, etc
Ali
Ali2y ago
@interactive-harp or if want to just check if it is an array or not you can use Array.isArray(person)
interactive-harp
thanks, another question this is my array: let person = ["cheese", "hot"]; let plea = "wouldShe"; person.name = "Mr. White"; person.plea = plea; person["diary"] = "diary"; console.log(person); console.log(person.length) This is the output: [ 'cheese', 'hot',
name: 'Mr. White', plea: 'wouldShe', diary: 'diary' ] 2 length is 2, shouldn't it be 5?
13eck
13eck2y ago
The actual output is:
13eck
13eck2y ago
The length is 2 because that's how many items are in the array Remember that everything in JS is an object, so your array now also has some object keys/values in addition the the 2 items in the array (and that's all that .length measures, the number of items in the array) The items prefixed with a number are the array indexes. This is digging into the weeds a bit, but when they say everything is an object everything is an object. An array isn't actually an array, it's an object with a length property and each item in the "array" is a property on the "array" object with a key of the "array" index Also, please use code blocks instead of inlining the formatting like that Start you code blocks with this: ```javascript // code goes here ``` And you can replace javascript with almost any programming language to use appropriate text highlighting (on desktop). Like HTML, CSS, Go, Python, etc.
Want results from more Discord servers?
Add your server