【发布时间】:2014-09-01 20:41:34
【问题描述】:
我在 javascript 中有一个这样的枚举类:
var Produce= {
Apple: 1,
Banana: 2,
Tomato: 3,
Orange: 4
}
我可以创建一个包含这些项目的数组,我在 mongo db 查询中使用以下内容:
var fruit = [Produce.Apple,Produce.Banana, Produce.Orange];
这可以正常工作并返回如下的真实值:
fruit[0] = 2(Apple), fruit[1] = 2(Banana), fruit[2] = 4(Orange)
到那时一切都很好。但是,我还需要创建一组不是水果的项目。实际上,枚举有超过 50 个值并且可以增长。这意味着我需要制作不包含在代码中的值数组。
我尝试了以下方法,但没有任何效果。
问题是生产数组不识别长度或计数
var excludedProduce = [];
for(var i = 0; i < produce.length ; i++){
if( fruit.indexOf(produce[0]) == -1) //add
excludedProduce .push(produce[0]);
任何帮助将不胜感激!
【问题讨论】:
-
看起来你正在尝试用 JS 编程,就像你用其他语言一样......我不确定这是否是一个好方法,并且可能会咬你......为什么不您是否创建了一系列产品,例如
var products = [{ name: 'Banana', isFruit: true }, { name: 'Car', isFruit: false}]? -
LOL:我已经用其他语言编写了更多的程序......不幸的是,我对如何完成这一点没有太多发言权。问题是我不想使用任何数量的“蔬菜”。在 mongo 查询中,您不仅要说出要查找的值 ($in),还必须说明不想要的值 ($nin)。
-
这个问题真的和MongoDB有关吗? (有一个标签)
-
是的,在 MongoDB 上。如果您知道在 $in 语句中只返回值的方法。如果其中任何一个与 $in 参数匹配,则具有嵌套集合的集合将返回所有嵌套值。限制的唯一方法是说 $in (parameters) AND $nin (parameters)。如果有其他方法,请指教。
标签: javascript arrays enums