在javascript数组的每个对象中选择一个字段

Selecting a field in every object of a javascript array

本文关键字:字段 一个 选择 对象 数组 javascript      更新时间:2023-09-26

我有一个身份验证方案,允许一个用户是多个公司的雇员。因此,当他们通过access_token进行身份验证时,该access_token允许他们在他们任职的任何一家公司进行交易。所以基本上用户有一个登录,他们可以与他们所有的公司互动,而不需要注销。

每当他们试图采取行动时,我需要确保他们是他们试图改变的公司的员工。

authorization函数在回调函数中有一个employees对象。这个列表是这样的:

[ { _id: 555c990c37b3af9214754416,
    company: 555c97d6b0b7e88d140810c6,
    user: 555c990c37b3af9214754415,
    __v: 0,
    date_added: Wed May 20 2015 10:23:07 GMT-0400 (EDT),
    permissions: { write: true, read: true } },
  { _id: 555c994937b3af921475441b,
    company: 555c992537b3af9214754417,
    user: 555c990c37b3af9214754415,
    __v: 0,
    date_added: Wed May 20 2015 10:23:07 GMT-0400 (EDT),
    permissions: { write: true, read: true } } ]

这将在每次调用API时完成,也就是说,将检查用户的employee对象列表;所以我想从每个对象中以最快和最简单的方式选择公司字段。虽然这可以很容易地完成使用for循环和编译company列表,我需要它更干净。

对于这种类型的东西是否有一个行符,一种方法来选择字段在每个索引不循环,或在后台循环完成?

lodash和类似的库提供pluck,它应该做您想做的:

var companies = _.pluck(employees, 'company');

这将为您提供一个bool,用于该员工是否在公司。这种方法的好处是,当找到true时,它会短路退出循环。

var isInCompany = _.some(employees, function(employee){
    employee.company === companyId;
});

根据您支持的浏览器(IE9+),您也可以使用本机对象。https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some

也许你可以使用数组。映射函数:

yourList.map(function(obj){return obj.company})

这将返回所有公司的列表。

相关文章: