2

This is very similar to existing threads but not quite the same:

Find object by id in an array of JavaScript objects

From this thread I know that I can find an Object via $.grep:

var events = [
                {startTime: 5, endTime: 20}, 
                {startTime: 15, endTime: 22}, 
                {startTime: 30, endTime: 31}
             ];

var results = $.grep(events, function(e){ 
   return (e.startTime == 15 && e.endTime == 22); });
return results[0]; // 1 result guaranteed

But how would I remove this found object from the events array? In order to use splice, do I need an index along with $.grep?

I need to find the Object in the Array by Key/Value, and then remove it.

var events = [
                {startTime: 5, endTime: 20}, 
                {startTime: 15, endTime: 22}, 
                {startTime: 30, endTime: 31}
             ];

var results = $.grep(events, function(e){ 
   return (e.startTime == 15 && e.endTime == 22); });
console.log(results[0]);
//console.log(events); // 1 result guaranteed
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
gene b.
  • 10,512
  • 21
  • 115
  • 227
  • 2
    Just use `filter`. It returns a new array, but only returns the objects that match the condition. Much easier. – Andy Dec 25 '17 at 20:49

2 Answers2

0
var events = [
    {startTime: 5, endTime: 20}, 
    {startTime: 15, endTime: 22}, 
    {startTime: 30, endTime: 31}
];

var filteredEvents = events.filter(function(item) {
    return item.prop !== undersirableValue;
});

more info here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Abderrahmane TAHRI JOUTI
  • 3,514
  • 2
  • 26
  • 43
0

Just use filter and negate the search

var events = [{
    startTime: 5,
    endTime: 20
  },
  {
    startTime: 15,
    endTime: 22
  },
  {
    startTime: 30,
    endTime: 31
  }
];

events = events.filter(e => !(e.startTime == 15 && e.endTime == 22));
console.log(events);
baao
  • 71,625
  • 17
  • 143
  • 203