我有一个函数,它接受各种过滤器值(每个过滤器的值存储在一个数组中)并将它们集中存储在一个对象中。我的想法是,通过这样做,我应该能够堆叠这些值 - 即,如果我有一个过滤器的值,然后选择第二个过滤器,这不应该消除第一个过滤器值,只要我'我返回完整的对象 - 这就是我正在做的事情。然而,由于某种原因,选择新的过滤器会消除先前选择的过滤器的值。这是我的代码:
public filterByTypes(value, type) {
let location = '', agency = '', zipcode = '', firstName = '', lastName = '', state = '';
if (value && type && type === 'location')
{
location = value;
}
if (value && type && type === 'agency')
{
agency = value;
}
else if (value && type && type === 'zip')
{
zipcode = value;
}
else if (value && type && type === 'firstName')
{
firstName = value;
}
else if (value && type && type === 'lastName')
{
lastName = value;
}
else if (value && type && type === 'state')
{
state = value;
}
return { location, agency, zipcode, firstName, lastName, state };
}
正如我所说,由于我返回一个带有每个值参数的对象,因此在我看来,这应该返回所有堆叠的值,而不仅仅是最近选择的值。然而,这就是正在发生的事情 - 当选择新的过滤器时,它会清除先前/不同过滤器中的值。我在这里缺少什么?
最佳答案
每次运行该函数时,您都会重置所有按键。尝试改为:
var filters = {};
function setFilter(type, value) {
if(value && type) { filters[type] = value; }
return filters;
}
如果您正在管理一个对象,“filters”可以是一个属性,“setFilter”可以是一个方法。
关于javascript - 在 JavaScript 对象中堆叠过滤器值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739866/