Ember js检查对象数组中的键值

时间:2014-08-02 07:53:03

标签: javascript foreach

我有一个包含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

2 个答案:

答案 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')

我实际上不会使用该计算属性,它只是伪代码。

希望有所帮助!