Javascript:按特定字段获取所有对象
Javascript: Get all objects by specific field
这可能是一个非常简单的问题,但我还没有遇到一个优雅的解决方案。
如何通过单个字段从数组中获取所有对象。例如
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
我想知道你是否可以用filter或map这样的函数来完成它,而不需要写一个长函数?
是的,它非常直接:
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'));
相关文章:
- Backbone虹吸以获取对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- Undercore.js获取对象数组中键对象的值
- 从数组中获取对象
- 在Sahi中获取[对象]作为按钮值
- 如何从jquery自动完成中获取对象值
- 从数组NodeJs中获取对象值
- 如何在javascript中在运行时获取对象/数组
- 从Javascript中谓词的数组中获取对象
- 如何获取对象名称
- 打字.如何获取对象'的属性名称与其值不同
- 扩展引导程序的typeahead以便获取对象而不是字符串
- 正在获取对象内部数组中的对象总数
- JavaScript:获取对象的评估属性
- minko从dom获取对象
- 如何获取对象
- 从类内部获取对象名称(JavaScript)
- 如何获取对象名称
- 获取对象的所有可能组合,其中值的总和与数字匹配