Javascript .过滤器不是一个函数
这是我的对象(请确保它是一种类型的对象): 为什么使用Javascript .过滤器不是一个函数,javascript,ecmascript-6,filter,functional-programming,Javascript,Ecmascript 6,Filter,Functional Programming,这是我的对象(请确保它是一种类型的对象): 为什么使用.filter对我不起作用 这是因为我的变量是typeof object,并且该方法仅适用于数组吗 this.activeUsers = window.users.filter( function(user) { // return ( (user.test === '0') && (user.isok === '0') ); return user.user_id === 1; }); 获取错误:
.filter
对我不起作用
这是因为我的变量是typeof object
,并且该方法仅适用于数组吗
this.activeUsers = window.users.filter( function(user) {
// return ( (user.test === '0') && (user.isok === '0') );
return user.user_id === 1;
});
获取错误:
.过滤器不是一个函数
建议的对象替代方案是什么 是数组上的一种方法。因为您发布的代码包含一个对象,所以您看到了这个错误。您可能希望在从对象获取所有值后应用过滤器,如下所示:
var用户={
"1": {
“用户id”:1,
“测试”:“,
“用户名”:“potato0”,
“isok”:“正确”
},
"2": {
“用户id”:2,
“测试”:“,
“用户名”:“potato1”,
“isok”:“正确”
},
"3": {
“用户id”:3,
“测试”:“,
“用户名”:“potato2”,
“isok”:“正确”
},
"4": {
“用户id”:4,
“测试”:“,
“用户名”:“potato3”,
“isok”:“位置D”
}
};
log(Object.values(users.filter)(user=>user.user_id==1))代码>过滤器
在阵列上工作。你的不是数组。如有疑问,请始终参考。过滤对象的建议解决方案是什么@31piy@wellhellothere修正给你一个对象而不是数组的问题。我认为这是一个好问题。只需添加一条注释,说明Array.prototype.filter仅适用于Array,因此您必须使用一些Object.values()或Object.keys()来处理..@KevinB您能帮我提一下建议吗?我会批准你的回答(限制4分钟)。这比在数组上运行相同的方法慢吗(从性能方面)。@wellhellothere--当然慢了,因为我们首先提取对象的值,然后迭代这些值。如果你能修复这段代码的源代码,让它给你一个数组,这就是推荐的修复方法。
this.activeUsers = window.users.filter( function(user) {
// return ( (user.test === '0') && (user.isok === '0') );
return user.user_id === 1;
});