我需要按键对JavaScript对象进行排序.
因此如下:
{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }
Run Code Online (Sandbox Code Playgroud)
会成为:
{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }
Run Code Online (Sandbox Code Playgroud) 什么是最好的JavaScript压缩器?我正在寻找一种工具:
有没有办法在更少的行上写这个,但仍然容易阅读?
var month = '';
switch(mm) {
case '1':
month = 'January';
break;
case '2':
month = 'February';
break;
case '3':
month = 'March';
break;
case '4':
month = 'April';
break;
case '5':
month = 'May';
break;
case '6':
month = 'June';
break;
case '7':
month = 'July';
break;
case '8':
month = 'August';
break;
case '9':
month = 'September';
break;
case '10':
month = 'October';
break;
case '11':
month = 'November';
break;
case '12':
month = 'December';
break;
}
Run Code Online (Sandbox Code Playgroud) 我正在用Javascript重建一个旧的Java项目,并意识到在JS中没有好的方法来做枚举.
我能想到的最好的是:
const Colors = {
RED: Symbol("red"),
BLUE: Symbol("blue"),
GREEN: Symbol("green")
};
Object.freeze(Colors);
Run Code Online (Sandbox Code Playgroud)
的const保持Colors被重新分配,并冷冻它防止突变的键和值.我正在使用符号,这Colors.RED是不等于0,或除了它自己之外的任何其他东西.
这个配方有问题吗?有没有更好的办法?
(我知道这个问题有点重复,但以前的Q/As都很老了,ES6给了我们一些新功能.)
编辑:
另一个解决序列化问题的解决方案,但我认为仍存在领域问题:
const enumValue = (name) => Object.freeze({toString: () => name});
const Colors = Object.freeze({
RED: enumValue("Colors.RED"),
BLUE: enumValue("Colors.BLUE"),
GREEN: enumValue("Colors.GREEN")
});
Run Code Online (Sandbox Code Playgroud)
通过使用对象引用作为值,可以获得与Symbols相同的冲突避免.
JavaScript 1.8.5(ECMAScript 5)添加了一些有趣的方法,可以防止将来修改传递的对象,具有不同程度的彻底性:
据推测,这些问题的关键在于捕获错误:如果您知道在某个点之后不想修改对象,则可以将其锁定,以便在以后无意中尝试修改时会抛出错误.("use strict";假设你已经完成了.)
我的问题:在现代JS引擎(如V8)中,使用上述方法锁定对象时是否有任何性能优势(例如,更快的属性查找,减少内存占用)?
(另请参阅John Resig的好解释 - 但不提及性能.)
$("#bc [id$=_dropdownID]").change(function() {
if (this.value == '2' || this.value == '3') {
$("#bc .pnl").show();
}
else {
$("#bc .pnl").hide();
}
Run Code Online (Sandbox Code Playgroud)
我在jQuery中有以下代码.有没有什么办法可以用ac#enum替换上面代码中的硬编码常量2和3?jQuery是否支持枚举,如果是,如何实现?任何建议欢迎....
我很难找到一个优雅的Enums解决方案,尤其是使用AngularJS在Enums中搜索.
让我描述一下情况以及我是如何处理它的:假设我有一个名为Event
This的事件有这两个属性:Severity和Status.两者都是Enums,由ID(1,2,3)和Title(严重性:"Light","Normal","Important"和Status:"Open","Closed","Pending Approval")定义
来自服务的Event对象具有Enums的ID,当我想显示我与{{ severityIdToTitle(Event.Severity) }}
SeverityIdtoTitle 绑定的对象时,我的控制器上的一个方法调用我的服务上的方法,该方法返回基于该方法的Enum的值. id recieved当我希望用户能够通过文本搜索对象时出现问题,AngularJS过滤器不知道Enum的实际"字符串"值,所以我遇到了我的问题.
我知道很多关于这方面的解决方法,并且有一些选择,但我想知道什么是优雅和干净的解决方案呢?我做了什么使事情变得复杂,有更好的方法吗?
多谢你们!
我在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)
阅读在Javascript 中处理ENUM类型的"推荐方法",我仍然不确定,因为我可以将值与伪造值进行比较,而我应该只比较"枚举"类型值:
var DaysEnum = {"monday":1, "tuesday":2, "wednesday":3, ...}
Object.freeze(DaysEnum)
switch( day ){
case "monday":
return "Hello"
case "tuesday":
return "Hi"
case "blahblahday":
return "No"
}
Run Code Online (Sandbox Code Playgroud)
我进行比较的字符串("星期一","星期二","blahblahday")完全没有我的"枚举类型:DaysEnum",可以由用户提供,这可能会导致一些未发现的细微错误由翻译(如拼写错误).
有没有办法拥有/锁定Enum对象的唯一索引值?
javascript ×9
enums ×5
angularjs ×1
compression ×1
date ×1
date-format ×1
ecmascript-5 ×1
ecmascript-6 ×1
immutability ×1
jquery ×1
json ×1
node.js ×1
sorting ×1
symbols ×1