Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript数组的每个对象中选择一个字段_Javascript_Loops_Indexing - Fatal编程技术网

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

在javascript数组的每个对象中选择一个字段,javascript,loops,indexing,Javascript,Loops,Indexing,我有一个身份验证方案,允许用户成为多家公司的雇员。因此,当他们通过access\u令牌进行身份验证时,该access\u令牌允许他们在他们所在的任何一家公司进行交易。因此,基本上用户只有一次登录,他们可以与所有公司进行交互,而无需注销 每当他们试图采取行动时,我需要确保他们是他们试图改变的公司的员工 authorize函数的回调中有一个employees对象。这是一个如下列表: [ { _id: 555c990c37b3af9214754416, company: 555c97d6b0b

我有一个身份验证方案,允许用户成为多家公司的雇员。因此,当他们通过
access\u令牌
进行身份验证时,该
access\u令牌
允许他们在他们所在的任何一家公司进行交易。因此,基本上用户只有一次登录,他们可以与所有公司进行交互,而无需注销

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

authorize函数的回调中有一个
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时都会执行此操作,即检查用户的
员工
对象列表;因此,我希望以最快、最简单的方式从每个对象中选择company字段。虽然使用for循环和编译
公司
列表可以很容易地实现这一点,但我需要它更干净


对于这类事情,有没有一种简单的方法,可以在每个索引处选择一个字段而不进行循环,或者在幕后进行循环?

如果员工在公司,这将为您提供一个
bool
。这种方法的优点在于,当找到一个真值时,它会在循环外短路

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

根据您支持的浏览器(IE9+),您也可以使用本机对象

也许您可以使用Array.map函数,如:

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

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

lodash和类似的库提供,这些库可以满足您的需要:

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

你能用?@minitech吗?它似乎可以工作,但它返回的是一个对象而不是数组,你有什么想法吗?你是如何使用它的?
var companys=lodash.pluck(employees,'company');控制台.日志(公司);控制台日志(公司类型)
Employees是一个对象,所以这可能是问题所在。@minitech,如果你发布一个答案,我会接受它。很高兴知道这一点,但是它现在不适合我的应用程序,因为它不像其他应用程序那么顺利。
.pulk
实际上调用了
.map
你应该从
.map(员工,“公司”)得到相同的结果
开销少一点。@chrisvdp:当然;我只是觉得这个名字更明显一点。