我不明白为什么当我尝试循环对象的数组属性时,过滤器返回一个空数组。
不过,当我试着做控制台的时候。日志(this.users)在getFilteredUsers方法中,我可以在它的原型中看到filter方法。。。
var userService = {
currentFilter: "active",
users: [
{ name: "Alex", status: "active" },
{ name: "Nick", status: "deleted" }
],
getFilteredUsers: function() {
// console.log(this.users);
return this.users.filter(function(user) {
return user.status === this.currentFilter;
});
}
};
console.log(userService.getFilteredUsers()); // []
问题是这个对象的作用域。它在Filer()的回调函数中改变。有两种方法可以尝试:
js prettyprint-override">var userService = {
currentFilter: "active",
users: [{
name: "Alex",
status: "active"
},
{
name: "Nick",
status: "deleted"
}
],
getFilteredUsers: function() {
const currentStatus = this.currentFilter;
return this.users.filter(function(user) {
return user.status === currentStatus;
});
}
};
console.log(userService.getFilteredUsers()); //[ { name: 'Alex', status: 'active' } ]
这是因为它的价值
这
在过滤器回调中。使用箭头函数获取正确的值
var userService = {
currentFilter: "active",
users: [
{ name: "Alex", status: "active" },
{ name: "Nick", status: "deleted" }
],
getFilteredUsers: function() {
// console.log(this.users);
return this.users.filter((user)=> {
return user.status === this.currentFilter;
});
}
};
console.log(userService.getFilteredUsers()); // []
问题内容: 我有一系列对象,我想知道搜索它的最佳方法。给定以下示例,我如何搜索和?jQuery有什么可以帮助的吗?还是我必须自己蛮力搜索? 问题答案: 您可以使用:
问题内容: 我在javascript中有一组对象。内容看起来像这样; 我想保留一些对象并删除其余的对象。如果object属性为2或34,则将保留对象。其他对象被删除。遗嘱的结果看起来像这样; 我正在使用node.js v6.91。 编辑:有人建议我使用过滤器来解决这种问题。欢迎使用过滤器技术的答案。 问题答案: 您可以尝试以下方法1和2: 方法1 :(使用) 注意:这将返回一个新数组,并且不会修改
根据条件过滤一个对象数组,同时过滤掉未指定的键(key)。 使用 Array.filter() 根据断言 fn 过滤数组,以便返回条件为真值(truthy)的对象。 在过滤出来的数组上,使用 Array.map() 和 Array.reduce() 返回新的对象来过滤掉 keys 参数中未提供的键。 const reducedFilter = (data, keys, fn) => data.
问题内容: 是否可以通过多个值过滤对象数组? 例如,在下面的示例中,我可以按term_ids 5和6进行过滤,然后同时键入car吗? 如果可以轻松使用,肯定可以使用库。 问题答案: 您可以使用Array.filter
问题内容: 我有以下JavaScript数组的房地产主页对象: 我想做的是能够对对象执行过滤,以返回“家庭”对象的子集。 例如,我想根据能够过滤:,,,和。 如何在JavaScript中执行类似下面的伪代码的操作: 注意,语法不必与上面完全相同。这只是一个例子。 问题答案: 您可以使用以下方法: 现场示例: 此方法是新ECMAScript 5th Edition标准的一部分,几乎可以在所有现代浏览
问题内容: 如何通过匹配对象属性从数组中删除对象? 请只使用本机JavaScript。 我在使用接头时遇到麻烦,因为每次删除的长度都会减少。使用克隆并在原始索引上进行拼接仍然会给您带来长度减少的问题。 问题答案: 我以为你用过这样的东西? 修复bug所需要做的就是在下一次减少,然后(也可以选择向后循环): 为了避免线性时间删除,可以编写要 保留 在数组上的数组元素: 为了避免在现代运行时中进行线性