【问题标题】:How to pull a property like "customer.gender" from an array of object with map [duplicate]如何从带有地图的对象数组中提取像“customer.gender”这样的属性[重复]
【发布时间】:2019-01-12 01:16:42
【问题描述】:

我正在使用 javascript map 循环遍历对象数组。今天我必须遍历一个看起来像的对象数组,

averageReport = [
    {
      "result": 150.54909908933223,
      "customer.gender": "Female"
    },
    {
      "result": 150.35230422844595,
      "customer.gender": "Male"
    }
  ];

我试图只得到“customer.gender”,

averageReport
      .map(x => console.log(x.customer.gender)

)

我收到错误“无法读取未定义的属性‘性别’” code on stackblitz

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    试试,

    averageReport
          .map(x => console.log(x["customer.gender"])
    

    【讨论】:

      【解决方案2】:

      由于您将密钥命名为 customer.gender,因此您不能使用点表示法来获取值,因此您必须使用方括号表示法 ([])。

      同样映射到console.log() 没有多大意义(因为console.log() 返回undefined,当在这里使用map() 时,您正在创建一个undefined 的新数组),只需使用forEach()

      averageReport = [{
          "result": 150.54909908933223,
          "customer.gender": "Female"
        },
        {
          "result": 150.35230422844595,
          "customer.gender": "Male"
        }
      ];
      
      averageReport.forEach(x => console.log(x["customer.gender"]));

      如果您想使用点符号访问该属性,则必须将 customer 设为对象并将 gender 设为它的属性,如下所示:

      averageReport = [{
          "result": 150.54909908933223,
          "customer": {
            "gender": "Female"
          }
        },
        {
          "result": 150.35230422844595,
          "customer": {
            "gender": "Male"
          }
        }
      ];
      

      【讨论】:

      • 为什么地图没有意义?
      • @anonymous:因为.map 返回一个带有回调返回值的新数组。您应该使用新数组。如果你不在乎,forEach 是更合适的解决方案。
      • 我添加了一个解释,它不仅返回一个新数组,而且返回一个新数组,看起来像这样:[undefined, undefined]
      【解决方案3】:

      使用bracket notation 访问customer.gender 属性。请尝试以下操作:

      var averageReport = [ { "result": 150.54909908933223, "customer.gender": "Female" }, { "result": 150.35230422844595, "customer.gender": "Male" } ];
        
      var result = averageReport.map(x =>x["customer.gender"]);
      console.log(result);

      【讨论】:

      • 您的回答与其他人有何不同。看起来一样。
      • @anonymous 他们几乎在发布其他答案的同时发布了答案,所有答案都在一分钟内发布,答案看起来如此相似,因为这是问题的唯一真正答案
      • 发帖时间可见。
      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 2018-08-30
      • 2010-11-10
      • 2020-06-03
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2021-06-18
      相关资源
      最近更新 更多