根据另一个值存储数组的项目

我有一个名为catalog的数组,它包含4个项目:

packageid,dataid,categoryid和datapackage。

我想要做的是将数据packageid的packageid等于packageBtnFilter且其categoryid等于categoryBtnFilter的项的所有数据集推入数组dataid 。 如果packageBtnFiltercategoryBtnFilter的值都为0,那么它应该将catalog的所有dataid都推送到dataids数组中。 目前它只是推送packageid等于3的项的数据。

  var packageBtnFilter = $('#packages').val(); var categoryBtnFilter = $('#categories').val(); var dataids = new Array(); $(catalogue).each(function () { if (this.packageid == 3) dataids.push(this.dataid); }); 

谢谢! 完整的代码在这里http://jsfiddle.net/hunter/Tcwgf/1/

使用filter函数过滤结果并映射以获取ID:

 var dataids = ( categoryBtnFilter==0 && packageBtnFilter==0 ? catalogue : catalogue.filter(function(i) { return i.categoryid=categoryBtnFilter && i.packageid==packageBtnFilter }) ).map(function(i){return i.dataid}); 

我认为你的病情应该是这样的

 if ((packageBtnFilter == 0 && categoryBtnFilter == 0) || this.packageid == packageBtnFilter || this.packageid == categoryBtnFilter) dataids.push(this.dataid);