Javascript:按特定字段获取所有对象

Javascript: Get all objects by specific field

本文关键字:获取 对象 字段 Javascript      更新时间:2023-09-26

这可能是一个非常简单的问题,但我还没有遇到一个优雅的解决方案。

如何通过单个字段从数组中获取所有对象。例如


var users = [{name:'John', age: 20}, 
{name:'Sarah', age: 21}, 
{name:'George', age:34}];
var names = magicFunction(users, 'name');
// names = ['John', 'Sarah', 'George']; 
// Another challenge is not to get field name (in this case 'name') with the value

我想知道你是否可以用filtermap这样的函数来完成它,而不需要写一个长函数?

是的,它非常直接:

var prop = 'name';
var names = users.map(function(x) { return x[prop]; });

或者,如果你想把它写进一个函数:

function getProp(arr, prop)
{
    return arr.map(function(x) { return x[prop]; });
}
var names = getProp(users, 'name');

更新在ES6语法中:

const getProp = (arr, prop) => Array.prototype.map.call(arr, x => x[prop]);
const names = getProp(users, 'name');

Undercore.js(可以作为节点包安装(有一个名为_.pluck的函数,它正是这样做的。如果使用_ = require("underscore"),实际上可以用_.pluck替换magicFunction

@p.s.w.g可能是您正在寻找的解决方案,但我想展示另一个解决方案:使用core.operators.

var names = users.map(opts.get('name'));