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);
这种方法对我不起作用。
答案 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 loop
比foreach
更快..这是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);