按键值查找和删除数组中的对象

时间:2017-12-25 20:47:26

标签: javascript jquery

这与现有线程非常相似,但不完全相同:

Find object by id in an array of JavaScript objects

从这个帖子我知道我可以通过$.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

但是如何从events数组中删除这个找到的对象呢?要使用splice,我是否需要索引以及$.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); });
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>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分: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;
});

此处有更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

答案 1 :(得分:0)

只需使用过滤器并取消搜索

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);