# Project Problem -- to do list

**URL:** <https://forum.kirupa.com/t/project-problem-to-do-list/658278>\
**Category:** Uncategorized\
**Created:** [April 19, 2023, 7:03am UTC](https://forum.kirupa.com/t/project-problem-to-do-list/658278 "2023-04-19T07:03:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yi\_Li](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yi_li/32/21618_2.png) [@Yi\_Li](https://forum.kirupa.com/u/Yi_Li)\
**Post date:** [April 19, 2023, 7:03am UTC](https://forum.kirupa.com/t/project-problem-to-do-list/658278/1 "2023-04-19T07:03:12Z")

</div>

Hello,

I am stuck on removing the to-do list (Line 80). I try to use item.filter() to filter out the item. But it has an error saying the “item. filter() is not a function”. I don’t know how to do it. 😭

[To-Do-List codesandbox](https://codesandbox.io/s/to-do-list-h13bnm)

---

<div class="post-metadata">

**Author:** ![PAEz](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/paez/32/19607_2.png) [@PAEz](https://forum.kirupa.com/u/PAEz)\
**Post date:** [April 19, 2023, 2:09pm UTC](https://forum.kirupa.com/t/project-problem-to-do-list/658278/2 "2023-04-19T14:09:45Z")

</div>

`filter()` is a function that is attached to Arrays.  
[Array.prototype.filter() - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)  
In your code `item.filter()`, `item` is an element from the newList array.

```javascript
const item = newList.find(
      (item) => item["key-data"] === e.target.getAttribute("key-data")
    );

```

So what you want to be doing is filtering out the item you want from `newList`.  
This will do that for you…

```javascript
  handler = (handlerKey, e) => {
    const { list } = this.state;
    // change newList to `let` so it can be changed later
    let newList = [...list];
    const item = newList.find(
      (item) => item["key-data"] === e.target.getAttribute("key-data")
    );
    switch (handlerKey) {
      case "strikeThru":
        item.isDone = !item.isDone;
        break;
      case "editClick":
        item.isEditing = !item.isEditing;
        break;
      case "editChange":
        item.editValue = e.target.value;
        break;
      case "confirm":
        item.isEditing = !item.isEditing;
        item.text = item.editValue;
        break;
      case "remove":
        // filter the newList so that every item is included except the one who's key-data matches the selected item
        newList = newList.filter(
          (todo) => todo["key-data"] !== item["key-data"]
        );
        // item.text = item.filter(item => item.text !== item["key-data"]);
        break;
      default:
        break;
    }
    this.setState({ list: newList });
  };

```

---

<div class="post-metadata">

**Author:** ![Yi\_Li](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/yi_li/32/21618_2.png) [@Yi\_Li](https://forum.kirupa.com/u/Yi_Li)\
**Post date:** [April 19, 2023, 8:19pm UTC](https://forum.kirupa.com/t/project-problem-to-do-list/658278/3 "2023-04-19T20:19:15Z")

</div>

Ah, I see. Thank you so much Paez!!
