【发布时间】:2015-01-20 15:41:24
【问题描述】:
所以基本上我在这里要做的是:
假设你有这个对象:
{
owner: 'Richard',
time: 141381983181,
type: 'Football',
approved:['Higgs','Rooney','Jake'],
pending:['Richmond','Sarah','Evelyin'],
rejected:['Bilbo','Alice','Marta']
}
现在,我需要一个快速函数来返回哪个“名称”属于哪个字段。
例如:determineUserLevel('Bilbo',aMeeting) //return rejected.
所以我写了一个:
function determineUserLevel(spec){
var event = spec.event,
user = spec.user;
if(event.owner === user) return 'owner';
for(var i = 0 ; i < event.approved.length; i++){
if(event.approved[i] === user) return 'approved';
}
for(var x = 0; x < event.pending.length; x++){
if(event.pending[x] === user) return 'pending';
}
for(var f = 0; f < event.rejected.length; f++){
if(event.rejected[f] === user) return 'rejected'
}
return 'user';
}
有没有更好的方法?性能明智?可维护的明智?或者这是相当可靠的?
谢谢。
【问题讨论】:
-
这个问题属于codereview.stackexchange.com,如果它有效并且您需要更好的方法。
-
如果您调用该函数的示例实际上与您的函数的签名匹配,那将会很有帮助。我假设您实际上是这样称呼它的:
determineUserLevel({event:aMeeting, user:"Bilbo"}); -
@MattBurland 跟我想的一样。
-
除非您的列表已排序,否则线性搜索是您能做的最好的。除非您将数组转换为字典/哈希集,否则如果它们很大和/或您正在进行大量查找,这可能很有用。
-
@MattBurland 列表已排序是什么意思?
标签: javascript