如何在对象

时间:2015-04-22 11:52:08

标签: javascript angularjs

我有一个对象:

TICKET_PRIORITIES: {
    LOW: 'low',
    NORMAL: 'normal',
    HIGH: 'high',
    VERY_HIGH: 'very high'
}

在客户端,我必须先添加select。

结果我想成为

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> 

在此选择中,我想选择&#34;选择&#34;选项和选择选项应该是下拉列表中的第一个。

3 个答案:

答案 0 :(得分:0)

var TICKET_PRIORITIES = {
    LOW: 'low',
    NORMAL: 'normal',
    HIGH: 'high',
    VERY_HIGH: 'very high'
  };
TICKET_PRIORITIES['SELECT']='select';
alert(JSON.stringify(TICKET_PRIORITIES));  

<强> Demo

答案 1 :(得分:0)

创建对象时不关心对象属性顺序,但您可以创建新属性,如:

TICKET_PRIORITIES = {
    LOW: 'low',
    NORMAL: 'normal',
    HIGH: 'high',
    VERY_HIGH: 'very high'
  }

TICKET_PRIORITIES.SELECT='select';

答案 2 :(得分:0)

不可能。 Javascript不关心或强制执行对象中属性的顺序(请参阅this question以供参考)。或者,引用ECMAscript标准(强调我的):

  

4.3.3对象   对象是Object类型的成员。它是无序的属性集合,每个属性都包含原始值,对象或函数。存储在对象属性中的函数称为方法。

如果订单对您很重要,您将需要使用数组的不同数据结构,例如像这样的东西:

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"})