canjscanjs-list

How to remove elements from can.List in CanJS


I'm new to CanJS. I was wondering how to remove the elements in can.List not using pop().

var todos1=new can.List([
              {name: "Apple",selected: false},
              {name: "Ball",selected: true},
              {name: "Cat",selected: false}                
            ]);

How to remove an element in the list with selected=true? Or is there any way to delete according to index. Documentation tells pop() is the only way and also splice.


Solution

  • You can definitely use splice or filter the list by the selected attribute and then replace it:

    var todos1=new can.List([
      {name: "Apple",selected: false},
      {name: "Ball",selected: true},
      {name: "Cat",selected: false}                
    ]);
    
    todos1.replace(todos1.filter(function(todo) {
      return todo.attr('selected') === true;
    }));
    

    Now todos1 will only contain the selected elements.