通过

时间:2017-01-10 18:17:08

标签: javascript object

这是我的目标:

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, items[key]);
});

3 个答案:

答案 0 :(得分:1)

如果您只想要所有者名称,请执行此操作,

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

循环中的tools[key]包含整个对象,当您需要单个属性时,只需使用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);
});




答案 1 :(得分:0)

forEach回调中,使用tools代替items。您的问题中的代码没有分配给items的任何内容,因此无法按预期工作。

通过owner

访问tools[key]中的tools[key].owner媒体资源

如果您只想记录所有者名称,则可以从key,中删除console.log

阅读: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
});




答案 2 :(得分:0)

您可以使用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);