Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据另一个值存储数组项_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 根据另一个值存储数组项

Javascript 根据另一个值存储数组项,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个名为目录的数组,其中包含4项: packageid、dataid、categoryid和datapackage 我要做的是将packageid等于packageBtnFilter且categoryid等于categoryBtnFilter的项目的所有数据ID推入数组中。如果packageBtnFilter和categoryBtnFilter的值均为0,则它应将目录的所有数据ID推送到dataID数组中。目前,它只推送packageid等于3的项目的数据ID v

我有一个名为目录的数组,其中包含4项:

packageid、dataid、categoryid和datapackage

我要做的是将
packageid
等于
packageBtnFilter
categoryid
等于
categoryBtnFilter
的项目的所有数据ID推入数组中。如果
packageBtnFilter
categoryBtnFilter
的值均为0,则它应将目录的所有数据ID推送到
dataID
数组中。目前,它只推送packageid等于3的项目的数据ID

              var packageBtnFilter = $('#packages').val();
              var categoryBtnFilter = $('#categories').val();   

                var dataids = new Array();

                $(catalogue).each(function () {
                  if (this.packageid == 3) dataids.push(this.dataid);
                });
谢谢! 完整的代码在这里

使用该功能过滤结果并获取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);

我想你忘记了0条件;没关系,你纠正了:)@alexb不,再读一遍我的答案。我只是觉得最好不要在循环中测试它,无论是可读性还是性能。我完全同意你的观点,在你最初的帖子中,我没有看到关于0条件的评论,但我想我错过了它,这是罪过,但是如果它们都等于0,我该如何添加条件呢?然后我们应该返回所有。非常感谢,唯一的问题是,它应该只将dataid返回到变量dataid中,在您返回每个项目的所有值时,您可以编辑它吗?