【问题标题】:Javascript Array of objects get single value [duplicate]Javascript对象数组获取单个值[重复]
【发布时间】:2014-05-26 23:48:45
【问题描述】:

假设我有一个对象数组:

var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}

是否有一个数组函数可以让我将一个属性作为数组获取, 例如:

namesArray = employees.reduceToProperty('name'); // none existent function i made up!

// should return ["George","Edward","Christine","Sarah"]

我知道如何通过循环获得所需的结果,我只是希望存在一个数组函数或函数组合可以在一行中做到这一点。

【问题讨论】:

标签: javascript arrays


【解决方案1】:
var names = employees.map(function(i) {
  return i.name;
});

names 现在是一个包含对象的name 属性的数组。

【讨论】:

【解决方案2】:

Array.prototype.map 将一个数组映射到另一个数组:

var names = employees.map(function (val) {
    return val.name;
});
// ['George', 'Edward', 'Christine', 'Sarah']

【讨论】:

    【解决方案3】:

    如果您发现自己经常这样做,您可以考虑使用来自 Underscore/Lo-Dash 的pluck

    var listOfPropertyNames = _.pluck(list, 'propertyName');
    

    如果您不想包含库,当然可以编写自己的pluck 用于您的代码库:

    function pluck(list, propertyName) {
      return list.map(function(i) {
        return i[propertyName];
      });
    }
    

    并运行它:

    pluck([{name: 'a'}, {name: 'b'}], 'name');
    ["a", "b"]
    

    您必须决定如何处理以下极端情况:

    • 列表中的对象没有该属性
    • undefined 在列表中
    • ?

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2016-11-23
      • 2021-09-14
      • 2012-12-07
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多