0

次の JSON 構造が存在するとします。

[
  {
    "role_id": 1,
    "role_name": "Admin"
  },
  {
    "role_id": 2,
    "role_name": "Editor"
  }
]

$rootScope.rolesに保存されます。

私が必要とするのは:

$rootScope.roles[index -> where role_id == 2].rolename  // gets -> Editor

Angularでそれを行うにはどうすればよいですか?

4

3 に答える 3

0

より「単一行」のソリューションを探している場合は、JS 配列関数を使用できますfind

($rootScope.roles.find(function (x) { return x.role_id == 2; }) || {}).role_name;

見つからない場合はfind返されるので、アクセス時に例外がスローされないようにnull、可能な結果を​​ に置き換えました。このようにして、指定されたものが見つからない場合に戻ります。{}null.role_nameundefinedrole_id

このメソッドは新しいテクノロジーであり、すべてのブラウザーで利用できるわけではないことに注意してください。詳細については、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findを参照してください。

別の「単一行」のより安定したソリューションは、次を使用することfilterです。

($rootScope.roles.filter(function (x) { return x.role_id == 2; })[0] || {}).role_name;

この他の方法はより安定しており、すべてのブラウザーで見つけることができます。詳細については、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filterを参照してください。

于 2015-11-04T20:43:13.583 に答える