How do I access properties of a javascript object if I don't know the names?

Active3 hr before
Viewed126 times

8 Answers


Meta Stack Overflow , Stack Overflow help chat ,Stack Overflow en español,Stack Overflow на русском

You can loop through keys like this:

for (var key in data) {

If you have a more complex object type (not just a plain hash-like object, as in the original question), you'll want to only loop through keys that belong to the object itself, as opposed to keys on the object's prototype:

for (var key in data) {
   if (data.hasOwnProperty(key)) {

As you noted, keys are not guaranteed to be in any particular order. Note how this differs from the following:

for each(var value in data) {

If your target browsers support ES5, or your site includes es5-shim.js (recommended), you can also use Object.keys:

var data = {
   Name: 'Property Name',
   Value: '0'
console.log(Object.keys(data)); // => ["Name", "Value"]
Object.keys(data).forEach(function(key) {
// => Logs "Property Name", 0
load more v

expression should evaluate to an object, and identifier is the name of the property you’d like to access.,2. Square brackets property accessor,Square brackets property access: object['property'],Dot property accessor:

A common way to access the property of an object is the dot property accessor syntax:

load more v

My thoughts on how to do this so far is to pass the names of the properties to the function along with the data, but this feels like a hack. I would prefer to do this with introspection if possible.,In my case I'm thinking specifically of a situation where a function needs to accept a series of name-value pairs, but the names of the properties may change.,But is it possible to get these values if you don't know the name of the properties? Does the unordered nature of these properties make it impossible to tell them apart?,You often will want to examine the particular properties of an instance of an object, without all of it's shared prototype methods and properties:

Say you have a javascript object like this:

var data = {
   foo: 'bar',
   baz: 'quux'

You can access the properties by the property name:

var foo =;
var baz = data["baz"];
load more v

In the next article we'll start to look at object-oriented programming (OOP) theory, and how such techniques can be used in JavaScript.,In this article, we'll look at fundamental JavaScript object syntax, and revisit some JavaScript features that we've already seen earlier in the course, reiterating the fact that many of the features you've already dealt with are objects.,Introducing JavaScript objects,JavaScript object basics

const person = {};
load more v

and it’s also very useful when you don’t know the property name beforehand, and you evaluate it programmatically, like in this example that loops through the object property names:,To get the value of the name property, you can use the dot syntax, like this:,This is especially useful when a property has not a valid variable name, like the name:,Or you can use the square brackets property accessor syntax:

const dog = {
   name: 'Roger'
load more v

In the user object, there are two properties:,As we know from the chapter Data types, there are eight data types in JavaScript. Seven of them are called “primitive”, because their values contain only a single thing (be it a string or a number or whatever).,Property value shorthand,Remove the property name from the object.

let user = new Object(); // "object constructor" syntax
let user = {}; // "object literal" syntax
load more v

The length property of an array tells us how many elements it has. This property name is a valid binding name, and we know its name in advance, so to find the length of an array, you typically write array.length because that’s easier to write than array["length"].,There’s an Object.assign function that copies all properties from one object into another.,A string can be repeated with the repeat method, which creates a new string containing multiple copies of the original string, glued together.,If we want a whole random number instead of a fractional one, we can use Math.floor (which rounds down to the nearest whole number) on the result of Math.random.

To run over a list (in listToArray and nth), a for loop specification like this can be used:

for (let node = list; node; node = {}

Use the hasOwnProperty() method to check if an property exists in the own properties of an object.,And the following uses the hasOwnProperty() method to check if the firstName property exists in the person object:,The JavaScript Object.prototype has the method hasOwnProperty() that returns true if a property exists in an object:,Use the in operator to check if a property exists in both own properties and inherited properties of an object.

The JavaScript Object.prototype has the method hasOwnProperty() that returns true if a property exists in an object:

.wp - block - code {
      border: 0;
      padding: 0;

   .wp - block - code > div {
      overflow: auto;

   .shcb - language {
      border: 0;
      clip: rect(1 px, 1 px, 1 px, 1 px); -
      webkit - clip - path: inset(50 % );
      clip - path: inset(50 % );
      height: 1 px;
      margin: -1 px;
      overflow: hidden;
      padding: 0;
      position: absolute;
      width: 1 px;
      word - wrap: normal;
      word - break: normal;

   .hljs {
      box - sizing: border - box;

   .hljs.shcb - code - table {
      display: table;
      width: 100 % ;

   .hljs.shcb - code - table > .shcb - loc {
      color: inherit;
      display: table - row;
      width: 100 % ;

   .hljs.shcb - code - table.shcb - loc > span {
      display: table - cell;

   .wp - block - code code.hljs: not(.shcb - wrap - lines) {
      white - space: pre;

   .wp - block - code code.hljs.shcb - wrap - lines {
      white - space: pre - wrap;

   .hljs.shcb - line - numbers {
      border - spacing: 0;
      counter - reset: line;

   .hljs.shcb - line - numbers > .shcb - loc {
      counter - increment: line;

   .hljs.shcb - line - numbers.shcb - loc > span {
      padding - left: 0.75 em;

   .hljs.shcb - line - numbers.shcb - loc::before {
      border - right: 1 px solid #ddd;
      content: counter(line);
      display: table - cell;
      padding: 0 0.75 em;
      text - align: right; -
      webkit - user - select: none; -
      moz - user - select: none; -
      ms - user - select: none;
      user - select: none;
      white - space: nowrap;
      width: 1 % ;
let result = targetObject.hasOwnProperty(propertyName);
Code language: JavaScript(javascript)
load more v

Other "object-access" queries related to "How do I access properties of a javascript object if I don't know the names?"