.filter 不是函数

wel*_*ere 16 javascript functional-programming filter ecmascript-6

这是我的对象(确保它是一个 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"}

}
Run Code Online (Sandbox Code Playgroud)

为什么使用.filter对我不起作用?

是因为我的变量是typeof object并且该方法仅适用于数组吗?

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

得到错误:

.filter 不是函数

建议的对象替代方案是什么?

31p*_*piy 40

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));
Run Code Online (Sandbox Code Playgroud)