我有一个对象:
TICKET_PRIORITIES: {
LOW: 'low',
NORMAL: 'normal',
HIGH: 'high',
VERY_HIGH: 'very high'
}
在客户端,我必须首先添加选择。
结果我想成为
TICKET_PRIORITIES: {
SELECT: 'select',
LOW: 'low',
NORMAL: 'normal',
HIGH: 'high',
VERY_HIGH: 'very high'
}
<select ng-model="selectedPriority" ng-options="key as key | translate for (key, value) in priorities" class="form-control m-b"> </select>
在此选择中,我想选择"选择"选项,选择选项应该在下拉列表的第一个。
var TICKET_PRIORITIES = {
LOW: 'low',
NORMAL: 'normal',
HIGH: 'high',
VERY_HIGH: 'very high'
};
TICKET_PRIORITIES['SELECT']='select';
alert(JSON.stringify(TICKET_PRIORITIES));
演示
创建对象时不考虑对象属性顺序,但您可以创建新属性,例如:
TICKET_PRIORITIES = {
LOW: 'low',
NORMAL: 'normal',
HIGH: 'high',
VERY_HIGH: 'very high'
}
TICKET_PRIORITIES.SELECT='select';
这是不可能的。Javascript 不关心或强制执行对象中属性的顺序(请参阅此问题以供参考)。或者,引用 ECMAscript 标准(强调我的):
4.3.3 对象 对象是对象类型的成员。它是属性的无序集合,每个属性都包含一个基元值、对象或函数。存储在对象属性中的函数称为方法。
如果顺序对你很重要,你将需要使用数组的不同数据结构,例如:
TICKET_PRIORITIES: [
{id: "LOW", label: "low"},
{id: "NORMAL", label: "normal"},
{id: "HIGH", label: "high"},
{id: "VERY_HIGH", label: "very high"}
]
这允许您执行以下操作(unshift
将元素添加到数组的开头):
TICKET_PRIORITIES.unshift({id: "SELECT", label: "select"})