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)