javascript - 在 JavaScript 对象中堆叠过滤器值不起作用

标签 javascript object

我有一个函数,它接受各种过滤器值(每个过滤器的值存储在一个数组中)并将它们集中存储在一个对象中。我的想法是,通过这样做,我应该能够堆叠这些值 - 即,如果我有一个过滤器的值,然后选择第二个过滤器,这不应该消除第一个过滤器值,只要我'我返回完整的对象 - 这就是我正在做的事情。然而,由于某种原因,选择新的过滤器会消除先前选择的过滤器的值。这是我的代码:

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/

相关文章:

javascript - Soundcloud 流,soundmanager2 对象在调用 play() 时从不在 Chrome 上开始播放

javascript正则表达式验证强制使用字母字符或字母数字字符,但不使用独立数字

javascript - 计算javascript中的单词并将其推送到一个对象中

javascript - 尝试制作一个 linux 终端但失败了

oop - 面向对象编程 - 何时添加新类?

javascript - 在 JavaScript 中访问对象内部的属性

java - 无法克隆数据

jquery - 引用 DOM jQuery DOM 对象时使用变量

javascript - 在挂载的生命周期中保存 Vuex 状态

javascript - Bootstrap 3.0 + 用于多个密码字段的 jQuery 密码强度计