1

Here is my object:

var tools = {

    hammer: {

        name: "hammer",
        number: "23",
        owner;
        "John"

    },

    screwdriver: {

        name: "screwdriver",
        number: "72",
        owner: "Peter",

    },

    crowbar: {

        name: "crowbar",
        number: "6",
        owner: "Jack"

    }
};

This function gives me all the data back in the console log nicely:

My question is how can i get only the value for owner only from the object?

    Object.keys(tools).forEach(function(key) {
    console.log(key, items[key]);
});
Rahul Desai
  • 15,242
  • 19
  • 83
  • 138
Zsolt Kindla
  • 19
  • 1
  • 6

3 Answers3

1

If you want only the owner name, do like this,

Object.keys(tools).forEach(function(key) {
 console.log(key, tools[key].owner);
});

Here tools[key] in the loop has the whole object, when you want a single property from it, just refer it with dot notation

var tools = {

  hammer: {

    name: "hammer",
    number: "23",
    owner: "John"

  },

  screwdriver: {

    name: "screwdriver",
    number: "72",
    owner: "Peter",

  },

  crowbar: {

    name: "crowbar",
    number: "6",
    owner: "Jack"

  }
};

Object.keys(tools).forEach(function(key) {
  console.log(key, tools[key].owner);
});
Supradeep
  • 3,246
  • 1
  • 14
  • 28
0

In your forEach callback, Use tools instead of items. Your code in your question does not have anything assigned to items so it wont work as expected.

Access the owner property in tools[key] by doing tools[key].owner

You could remove key, from the console.log if you literally want just the owner name logged.

Read up: Property accessors | MDN

var tools = {

  hammer: {

    name: "hammer",
    number: "23",
    owner: "John"

  },

  screwdriver: {

    name: "screwdriver",
    number: "72",
    owner: "Peter",

  },

  crowbar: {

    name: "crowbar",
    number: "6",
    owner: "Jack"

  }
};

Object.keys(tools).forEach(function(key) {
  console.log(key, tools[key].owner); // remove `key,` if you literally want just the owner name logged
});
Rahul Desai
  • 15,242
  • 19
  • 83
  • 138
0

You could collect the names in an array with Array#map.

var tools = { hammer: { name: "hammer", number: "23", owner: "John" }, screwdriver: { name: "screwdriver", number: "72", owner: "Peter" }, crowbar: { name: "crowbar", number: "6", owner: "Jack" } },
    owners = Object.keys(tools).map(function(key) {
        return tools[key].owner;
    });

console.log(owners);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392