【问题标题】:Accessing Object Property Values Within an Array - JavaScript访问数组中的对象属性值 - JavaScript
【发布时间】:2019-10-15 14:27:59
【问题描述】:

学习如何访问属性值。

如果我有

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

我如何 console.log 只记录第二个对象的 ? IE。 “网站开发者”。

我知道如何使用.find() 控制台记录整个键值对(或对象):

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}
));

但是这对的呢?

【问题讨论】:

  • 为什么每个属性都在自己的对象中,而不是像{name: "HappyHands31", job: "website developer", ...}这样的单个对象?
  • @Barmar 这只是它在编码挑战中的呈现方式......

标签: javascript arrays object ecmascript-6


【解决方案1】:

您可以通过索引访问给定位置的数组中的项目。在 JavaScript 中,数组的索引从 0 开始:myArray[0]。要访问返回对象的属性,只需使用点符号:myArray[0].myProperty

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1[1].job);

对于您给定的示例,这也可以通过附加属性名称(带点符号)来实现:

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}).job);

【讨论】:

  • 对不起,我编辑了“name”和“age”的值 :) 在第二个 sn-p
【解决方案2】:

你可以解构这个值:

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
const { job: res } = object1.find(({ job }) => job);
console.log(res);

【讨论】:

    【解决方案3】:

    一种解决方案是将每个对象的键存储在某处,然后以通常的方式访问该对象。

        let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
        
        for(let i=0; i<3; i++){
           name = Object.keys(object1[i]);
           console.log(object1[i][name])
        }

    在这种情况下,我假设您不知道要访问的密钥的名称。

    【讨论】:

      【解决方案4】:

      只需在其末尾添加一个属性访问即可。

      let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
      
      console.log(object1.find(function(element) {
          return element.hasOwnProperty("job");
      }).job);

      【讨论】:

        【解决方案5】:

        首先,您的object1 是一个对象数组,而不是一个对象。

        虽然,有一种方法可以实现你想要的。

        const fun = (arr, prop) => arr.find((obj) => obj.hasOwnProperty(prop))[prop];
        
        const object1 = [{name: 'HappyHands31'}, {job: 'website developer'}, {city: 'Chicago'}];
        
        const property = 'job';
        
        console.log(fun(object1, property));

        【讨论】:

          【解决方案6】:

          如果数组中的对象结构相同,您可以像这样展平该对象数组并直接调用它作为对象键。

          let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
          let flatten = {}
          object1.map((currentValue, index) => {
            let key = Object.keys(currentValue)  
            flatten[key] = currentValue[key]
          });
          console.log(flatten)
          console.log(flatten.job)

          【讨论】:

            猜你喜欢
            • 2013-12-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-04
            • 1970-01-01
            相关资源
            最近更新 更多