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

时间:2013-01-16 12:09:53

标签: javascript jquery arrays

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

packageid,dataid,categoryid和datapackage。

我想要做的是将packageid等于packageBtnFilter且其categoryid等于的项目的所有数据标识推入数组 dataids categoryBtnFilter。如果packageBtnFiltercategoryBtnFilter的值均为0,那么它应该将目录的所有数据集推送到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/

2 个答案:

答案 0 :(得分:1)

使用filter功能过滤结果,使用map获取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});

答案 1 :(得分:1)

我认为你的情况应该是

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