Javascript 如何在表上使用.filter()?

Javascript 如何在表上使用.filter()?,javascript,filter,Javascript,Filter,我在使用表上的.filter()时遇到问题。它由5个单元格组成,我需要根据最后一个单元格(索引4)的内容/值筛选表。它有3个可能的值:“Node.JS”、“ReactJS”和“AngularJS”。如果用户希望为“Node.JS”筛选表,我希望删除所有表数据(仅html,我已将所有内容保存到localStorage),并将包含“Node.JS”的所有行添加到新对象(Filteredata)。然后,我希望在新对象上调用createTable函数,但我似乎无法正确过滤它。我哪里做错了?感谢您的帮助(

我在使用表上的.filter()时遇到问题。它由5个单元格组成,我需要根据最后一个单元格(索引4)的内容/值筛选表。它有3个可能的值:“Node.JS”、“ReactJS”和“AngularJS”。如果用户希望为“Node.JS”筛选表,我希望删除所有表数据(仅html,我已将所有内容保存到localStorage),并将包含“Node.JS”的所有行添加到新对象(Filteredata)。然后,我希望在新对象上调用createTable函数,但我似乎无法正确过滤它。我哪里做错了?感谢您的帮助(请不要提问):)

函数filterTable(){
const filterBy=document.getElementById('filter');//筛选选项选择
const rows=table.rows;
const savedData=JSON.parse(localStorage.getItem('data');
让filteredData=savedData.filter(函数(){
对于(让i=1;i
您以错误的方式使用过滤器

下面是一个关于如何使用
filter()

var数组=[{name:“Alen”},{name:“Toma”}]
var filterValue=“al”
var result=array.filter(函数(x){返回x.name.toLowerCase().indexOf(filterValue.toLowerCase())!=-1})

console.log(result)
我已经弄明白了,这就是我让它为自己工作的方式。我将把这个问题留待讨论,以防有人能利用它。谢谢大家的帮助,我不太明白。如果目的是创建一个与
savedData
中的内容相匹配的数据列表,那么只需过滤
savedData
并忽略表中的任何内容。您可以发布一个存储在本地存储中的数据示例,即savedData吗?下面是一个示例:{name:“bilbo”,nachname:“baggins”,bday:“20.05.2021”,beruf:“Hobbit”,veranstaltung:“Node.JS”}@DaveNewton代码看起来怎么样?你说的很有道理,但Idk如何应用它:/现在,我为什么要这么做?本例中存储的数据是一个数组,因此它将与我的变量数组{name:“bilbo”、nachname:“baggins”、bday:“20.05.2021”、beruf:“Hobbit”、veranstaltung:“Node.JS”}相同。这不是一个数组,而是一个对象,因此您可以检查是否可以使用
object.values
object.names
然后使用
过滤器()
SavedData实际上是一个对象数组。它实际上看起来是这样的:[{name:“bilbo”,nachname:“baggins”,bday:“20.05.2021”,beruf:“Hobbit”,veranstaltung:“Node.JS”}],所以您可以使用我的示例轻松地完成它
function filterTable() {
        const filterBy = document.getElementById('filter'); // filter option select
        const rows = table.rows;
        const savedData = JSON.parse(localStorage.getItem('data'));
        let filteredData = savedData.filter(function () {
            for (let i = 1; i < rows.length; i++) { // i = 1 to skip header
                if (filterBy.value === 'Node.JS' && rows[i].cells[4].innerText === 'Node.JS') {
                    filteredData = savedData.filter(rows[i].cells[4].innerText); // I tried using return, but that only stops the function
                } else if (filterBy.value === 'ReactJS' && rows[i].cells[4].innerText === 'ReactJS') {
                    filteredData = savedData.filter(rows[i].cells[4].innerText);
                } else if (filterBy.value === 'AngularJS' && rows[i].cells[4].innerText === 'AngularJS') {
                    filteredData = savedData.filter(rows[i].cells[4].innerText);
                }
                console.log(filteredData);
            }
        })
    }
function filterTable() {
        const filterBy = document.getElementById('filter'); // filter option select
        const savedData = JSON.parse(localStorage.getItem('data'));
        let filteredArray;
        if (filterBy.value === 'Node.JS') {
            filteredArray = savedData.filter(function (e) {
                return e.veranstaltung === 'Node.JS';
            })
        } else if (filterBy.value === 'ReactJS') {
            filteredArray = savedData.filter(function (e) {
                return e.veranstaltung === 'ReactJS';
            })
        } else if (filterBy.value === 'AngularJS') {
            filteredArray = savedData.filter(function (e) {
                return e.veranstaltung === 'AngularJS';
            })
        }
        for (let i = 0; i < filteredArray.length; i++) {
            createTable(filteredArray[i]);
        }
    }