如果它包含在数组对象中,请获取其他字段

时间:2016-09-06 21:55:13

标签: ruby-on-rails arrays ruby

标题可能会响起,但下面会解释更多。

我需要知道一个项是否包含在数组对象中:

[
  { id: 12345, name: "Bob", email: "bob@builder.com" },
  ...
  { id: 13456, name: "job", email: "joe@farm.com" }
]

英语:如果此email出现,请告诉我id

users = User.all
users.any?{|u| u.email == "bob@builder.com"} # true

那是真的。现在,如何获得用户的id“12345”?请注意,我不会知道id

2 个答案:

答案 0 :(得分:0)

由于您似乎在使用ActiveRecord,因此查询数据库中的电子邮件会更快:

@Override
public Observable<Page> search(@NonNull final String query) {
    return Observable.create(new Observable.OnSubscribe<Page>() {
        @Override
        public void call(Subscriber<? super Page> subscriber) {
            Realm realm = null;
            try {
                realm = mRealmManager.getRealm();

                final Page page = realm.where(Page.class).equalTo("query", query).findFirst();
                if(page != null && page.isLoaded() && page.isValid()) {
                    Log.i("data from", "realm");
                    subscriber.onNext(page);
                } else {
                    Log.i("data is", "empty");
                    Observable.empty();
                }
                subscriber.onCompleted();
            } finally {
                if(realm != null) {
                    mRealmManager.closeRealm(realm);
                }
            }
        }
    });
}

答案 1 :(得分:0)

如果您有哈希数组,可以尝试这样:

arr.map do |h|
  h[:id] if h[:email] == "bob@builder.com"
end.compact

它将在满足条件的所有哈希值的数组中返回id的值。