0

I can not understand why it does not work this way. My best guess is syntax is not correct here is the code I am trying to shorten to code but does not work

function generateFilteredArr(option) {
    for (let i = 0; i < personalInfoArr.length; i++) {
        if (personalInfoArr[i].option === filterWord.value) {
            tmpPersonalInfoArr.push(personalInfoArr[i])
        }
    }
}
generateFilteredArr(gender)

I am just trying to dry code because this part of the code it almost the same as others Basically this code worked perfectly

genderFilter.addEventListener('click', function() {
    tableBody.innerHTML = ''
    tmpPersonalInfoArr = []
    generateFilteredArr(gender)
        for (let i = 0; i < personalInfoArr.length; i++) {
            if (personalInfoArr[i].gender === filterWord.value) {
                tmpPersonalInfoArr.push(personalInfoArr[i])
            }
        }
    filter()
    tableTextColor(`#218838`)
})
medzvre gena
  • 115
  • 1
  • 1
  • 9
  • 2
    `personalInfoArr[i].option` -> `personalInfoArr[i][option]` and `generateFilteredArr(gender)` -> `generateFilteredArr("gender")` – VLAZ Nov 25 '20 at 16:31
  • 2
    Also, even shorter when abstracted as `filterByProp = (prop, value, arr) => arr.filter(x => x[prop] === value)` which you can call as `filterByProp("gender", filterWord.value, personalInfoArr)`. – VLAZ Nov 25 '20 at 16:35
  • thanx works perfectly ;) – medzvre gena Nov 25 '20 at 16:42

0 Answers0