将枚举转换为值数组(将所有JSON值放入数组中)

Tol*_*a E 8 javascript enums json node.js

在JavaScript中使用这个方法枚举?在我们的代码中创建枚举..

所以

var types = {
  "WHITE" : 0,
  "BLACK" : 1
}
Run Code Online (Sandbox Code Playgroud)

现在问题是当我想在任何地方创建验证时,我必须这样做;

model.validate("typesColumn", [ types.WHITE, types.BLACK ]);
Run Code Online (Sandbox Code Playgroud)

现在有一种方法可以简单地将类型中的值转换为数组,这样我就不必列出枚举的所有值吗?

model.validate("typesColumn", types.ValuesInArray]);
Run Code Online (Sandbox Code Playgroud)

编辑:我创建了一个非常简单的枚举库来生成简单的枚举npm --save-dev install simple-enum(https://www.npmjs.com/package/simple-enum)

Ali*_*ani 16

简单的解决方案(ES6)

你可以Object.values像这样使用:

var valueArray = Object.values(types);
Run Code Online (Sandbox Code Playgroud)

在线演示(小提琴)


Yan*_*ann 11

我会将地图转换为数组并将其存储为types.all.您可以创建一个自动执行此操作的方法:

function makeEnum(enumObject){
   var all = [];
   for(var key in enumObject){
      all.push(enumObject[key]);
   }
   enumObject.all = all;
}
Run Code Online (Sandbox Code Playgroud)


c.P*_*.u1 6

var types = {
  "WHITE" : 0,
  "BLACK" : 1
}
var typeArray = Object.keys(types).map(function(type) {
    return types[type];
});
//typeArray [0,1]

model.validate("typesColumn", typeArray);
Run Code Online (Sandbox Code Playgroud)

jsFiddle演示

  • +1 表示“Object.keys”。适用于 Node.js 等现代环境的现代 JavaScript 代码! (3认同)