作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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]);
任何帮助将不胜感激!
最佳答案
这将完成这项工作:
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]);
}
}
}
说明:
关于您的代码,存在任何几个问题主要是由于您将对象视为数组并期望它像数组一样工作。我建议阅读像 Javascript the Good Parts 这样的书如果您想了解有关该语言的更多信息或使用类似 underscore 的框架将其中的一些抽象出来,并允许您轻松地循环对象并对它们执行其他很酷的辅助操作。
关于javascript - 枚举到数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612667/
我是一名优秀的程序员,十分优秀!