Jquery在对象prop上的数组中删除元素

时间:2017-10-26 11:19:46

标签: jquery

forms.push({
  'form_id'           : form_id,
  'field_name_id'     : $(this).find('input[name=field_name_id]').val(),
  'field_input_type'  : $(this).find('input[name=field_input_type]').val(),
  'field_caption'     : $(this).find('input[name=field_caption]').val()
});

我的数组是这样的,我想删除数组中的form_id = 3.

$.grep(forms, function(el, idx) {return el.form_id == form_id}, true);

这种方法对我不起作用。

3 个答案:

答案 0 :(得分:1)

 for (i = 0; i < forms.length; i++) { 
    if(forms[i].form_id == 3){
           delete forms[i];
    }
 }

您正在根据forms数组总元素的计数进行循环forms.length ..然后forms[i].form_id是一种调用object的方法...基于条件删除按index(i)

形成数组的delete forms[i]数组

重要的事情

然后我们可以简单地将foreach用于javascript arrays。它最简单的比for循环..但根据研究for loopforeach更快..这是https://thejsguy.com/2016/07/30/javascript-for-loop-vs-array-foreach.html

的一个很好的解释

答案 1 :(得分:0)

以下是一个可以帮助您的示例:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
  var forms = [{
      id: 1,
      name: 'John',
      address: 'Highway 71'
    },
    {
      id: 2,
      name: 'Peter',
      address: 'Lowstreet 4'
    },
    {
      id: 3,
      name: 'Amy',
      address: 'Apple st 652'
    },
    {
      id: 4,
      name: 'Hannah',
      address: 'Mountain 21'
    },
    {
      id: 5,
      name: 'Michael',
      address: 'Valley 345'
    },
  ];
  var newForms = $.grep(forms, function(obj, index) {
    return obj.id != 3;
  });
  console.log(newForms);
</script>

或者您可以使用filter过滤对象:

var object=object.filter(item=> return item.form_id!=3);

答案 2 :(得分:0)

var filteredForm = forms.filter((obj)=> obj.form_id !== 3);
console.log('Forms:: ', forms);