Javascript 枚举到数组的值

Javascript 枚举到数组的值,javascript,arrays,enums,Javascript,Arrays,Enums,我在javascript中有一个enum类,如下所示: var Produce= { Apple: 1, Banana: 2, Tomato: 3, Orange: 4 } fruit[0] = 2(Apple), fruit[1] = 2(Banana), fruit[2] = 4(Orange) 我可以创建这些项的数组,在mongo db查询中使用这些项,如下所示: var fruit = [Produce.Apple,Produce.Ba

我在javascript中有一个enum类,如下所示:

var Produce= {
     Apple: 1,
     Banana: 2,
     Tomato: 3,
     Orange: 4
    }
fruit[0] = 2(Apple), fruit[1] = 2(Banana), fruit[2] = 4(Orange)
我可以创建这些项的数组,在mongo db查询中使用这些项,如下所示:

var fruit = [Produce.Apple,Produce.Banana, Produce.Orange];
这可以正常工作,并返回如下真实值:

var Produce= {
     Apple: 1,
     Banana: 2,
     Tomato: 3,
     Orange: 4
    }
fruit[0] = 2(Apple), fruit[1] = 2(Banana), fruit[2] = 4(Orange)
在这一点上一切都很好。但是,我还需要创建一个非水果的项目数组。实际上,枚举有50多个值,并且可以增长。这意味着我需要生成代码中不包含的值和值数组

我尝试了以下方法,但没有任何效果

问题是product数组无法识别长度或计数

var excludedProduce = [];  

for(var i = 0; i < produce.length ; i++){
     if( fruit.indexOf(produce[0]) == -1) //add
         excludedProduce .push(produce[0]);
var excludedproduct=[];
对于(变量i=0;i
非常感谢您的帮助!

这将完成以下工作:

var fruit = [Produce.Apple,Produce.Banana, Produce.Orange];
var excludedProduce = [];
for (var p in Produce) {
    if (Produce.hasOwnProperty(p)) {
        if (fruit.indexOf(Produce[p]) === -1) {
            excludedProduce.push(Produce[p]);
        }
    }
}
说明:

  • 循环使用中的product中的键
  • 在使用它们之前,确保它们不是原型属性
  • 检查该值是否不在数组中
  • 如果不是,则将该值推入excludedProduce数组

关于您的代码,有几个问题主要是因为您将对象视为数组,并期望它像数组一样工作。我建议您阅读一本书,比如您是否想进一步了解该语言,或者使用一个框架来抽象其中的一些内容,并允许您轻松地循环对象并执行其他很酷的操作帮助器操作。

看起来您正在尝试用JS编程,就像在其他语言中使用一样……我不确定这是否是一种好方法,可能会对您造成伤害……为什么不创建一个产品数组,如
var products=[{name:'Banana',isFruit:true},{name:'Car',isFruit:false}]
?LOL:我已经用其他语言编写了更多的程序……不幸的是,我对如何实现这一点没有太多发言权。问题是,可能会添加任何数量的我不想使用的“蔬菜”。在mongo查询中,你不仅要说你想找到什么值($in),还要说你不想要什么值($nin)。这个问题真的与MongoDB有关吗?(在MongoDB上有一个标记)是的。如果您知道只在$in语句中返回值的方法,那么具有嵌套集合的集合将返回所有嵌套值(如果其中任何一个与$in参数匹配)。限制的唯一方法是说$in(参数)和$nin(参数).如果有其他方法,请提供建议。没问题,乐意帮助:)