【问题标题】:How to add an element at first of object如何在对象的第一个添加元素
【发布时间】:2015-04-22 11:52:07
【问题描述】:

我有一个对象:

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> 

在这个选择中我想选择“选择”选项,选择选项应该在下拉列表的第一个。

【问题讨论】:

  • 请参考[在此处输入链接描述][1] [1]:stackoverflow.com/questions/10691409/…
  • 对象项目杂乱无章。所以在对象中没有所谓的第一个元素
  • 你尝试这样做是为了解决什么问题,因为你对JS对象的理解是错误的。也许我们可以帮助您弄清楚您要做什么。
  • Syms 我参考了您的链接。感谢您发布。我的问题不一样。 在这个选择中我想选择“选择”选项和选择选项应该在下拉列表的第一个。
  • Tresdin - 请提供一些参考资料并解释您的评论。在对象中,元素会保持无序吗?

标签: javascript angularjs


【解决方案1】:
var TICKET_PRIORITIES = {
    LOW: 'low',
    NORMAL: 'normal',
    HIGH: 'high',
    VERY_HIGH: 'very high'
  };
TICKET_PRIORITIES['SELECT']='select';
alert(JSON.stringify(TICKET_PRIORITIES));  

Demo

【讨论】:

  • 根据我的要求,首先应该选择厄齐尔。感谢您的回答
  • @Veera 这是object 而不是array,这将导致index 问题。
【解决方案2】:

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

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

TICKET_PRIORITIES.SELECT='select';

【讨论】:

  • 根据我的要求,首先应该选择 Mytri。感谢您的回答
  • @Veera 你想要一个数组或对象吗?
【解决方案3】:

这是不可能。 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"})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多