Javascript 根据另一个值存储数组项
我有一个名为目录的数组,其中包含4项: packageid、dataid、categoryid和datapackage 我要做的是将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
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中,在您返回每个项目的所有值时,您可以编辑它吗?