1. ホーム
  2. javascript

[解決済み] .filterは機能ではありません[重複]。

2022-01-31 21:35:12

質問

これは私のオブジェクトです(typeofオブジェクトであることを確認しました)。

{
    "1": {"user_id":1,"test":"","user_name":"potato0","isok":"true"},

    "2":{"user_id":2,"test":"","user_name":"potato1","isok":" true"},

    "3":{"user_id":3,"test":"","user_name":"potato2","isok":" true"},

    "4":{"user_id":4,"test":"","user_name":"potato3","isok":"locationd"}

}

を使用する理由 .filter はうまくいかないのですか?

私の変数が typeof object で、このメソッドは配列に対してのみ動作するのですか?

this.activeUsers = window.users.filter( function(user) {
     // return ( (user.test === '0') && (user.isok === '0') ); 
     return user.user_id === 1;
}); 

を取得すると、エラーが発生します。

.filterは関数ではありません。

オブジェクトを使った代替案は?

解決方法は?

filter は配列に対するメソッドです。投稿されたコードにはオブジェクトが含まれているため、このエラーが表示されています。を使用してオブジェクトからすべての値を取得した後、フィルタを適用したい場合があります。 Object.values このように

var users = {
  "1": {
    "user_id": 1,
    "test": "",
    "user_name": "potato0",
    "isok": "true"
  },

  "2": {
    "user_id": 2,
    "test": "",
    "user_name": "potato1",
    "isok": " true"
  },

  "3": {
    "user_id": 3,
    "test": "",
    "user_name": "potato2",
    "isok": " true"
  },

  "4": {
    "user_id": 4,
    "test": "",
    "user_name": "potato3",
    "isok": "locationd"
  }
};

console.log(Object.values(users).filter(user => user.user_id === 1));