我有一个包含4个用户对象的用户数组。
users: [
{
id: 1,
user_id: 10116,
email: "xx.xx@gmail.com",
password: "xx.xx@gmail.com"
},
{
id: 2,
user_id: 10117,
email: "yy@gmail.com",
password: "yy@gmail.com"
},
{
id: 4,
user_id: 10126,
email: "bangalore@aurus.com",
password: "bangalore@aurus.com"
}
]
var myEmail = "xx.xx@gmail.com";
var myPassword = "xx.xx@gmail.com";
检查特定myEmail
&的最短方法是什么? myPassword
在给定的users
数组中存在/匹配。
有没有Ember方式这样做?
我尝试使用forEach
循环并尝试检查值。我正在寻找一个最佳的解决方案。
THX
答案 0 :(得分:2)
它不是一条线,但只使用内置的Javascript,我能提出的最简洁的是:
var user = users.filter(function (element) {
return element.email == myEmail && element.password == myPassword;
})[0];
这是一个有效的jsFiddle:http://jsfiddle.net/dqMLG/
答案 1 :(得分:1)
在我回答之前,请注意。通过以任何形式向客户端公开密码,您将使用户面临极大的风险。与你加密它们或其他什么无关。
也就是说,您可能正在寻找.any
http://emberjs.com/api/classes/Ember.Array.html#method_any
如果条件与枚举中的一个或多个项匹配,它将返回true(布尔值)。我经常在计算属性中使用它。例如,以下是您将该集合循环到模板中并希望在项目控制器中工作的情况:
matchedEmailAndPassword: function () {
return this.get('users').any(function (item) {
return item.get('email') === this.get('email') && item.get('password') === this.get('password');
}.property('email', 'password')
我实际上不会使用该计算属性,它只是伪代码。
希望有所帮助!