javascript - 按特定顺序对对象进行排序 - Angular

标签 javascript angularjs

我有一个对象的对象。我想按特定顺序显示对象及其值。(不是按字母顺序)

我怎样才能用 Angular 来实现这一点?这是我的示例对象

var filters = {
    language : { someProperty : "prop1", someOther : "prop2" },
    country : { resumeProp : "prop", resumeProp2 : false },
    destination { resumeProp : "prop", resumeProp2 : false },
};

我想安排示例目的地、国家/地区,然后是语言。

最佳答案

JavaScript 对象根据定义是无序的(请参阅 ECMAScript Language Specification,第 4.3.3 节)。语言规范甚至不保证,如果连续两次迭代对象的属性,它们第二次会以相同的顺序出现。

如果您需要对事物进行排序,请使用数组Array.prototype.sort方法:

var filters = [
    { name: "language", order: 2, someProperty : "prop1", someOther : "prop2" },
    { name: "country", order: 1, resumeProp : "prop", resumeProp2 : false },
    { name: "destination", order: 0, resumeProp : "prop", resumeProp2 : false }
];

function compare(a,b) {
  if (a.order < b.order)
    return -1;
  else if (a.order > b.order)
    return 1;
  else 
    return 0;
}

filters.sort(compare); // destination, country, language

如果您使用 ES6 进行编码,则可以使用 the Map object这类似于对象和 guarantees key order .

如果原始对象无法修改,则

  1. 使用对象的索引创建另一个数组,例如 varfiltersKey = ['destination', 'country', 'language'];

  2. 在该阵列上运行ng-repeat

  3. 使用filters[value]从原始对象获取值,其中value表示ng-repeat公开的filtersKey中包含的每个字符串。

关于javascript - 按特定顺序对对象进行排序 - Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37161483/

相关文章:

javascript - 如何理解 typescript 索引签名?

javascript - 悬停时纯 css 弹出子菜单

javascript - Chart.js 标签中的 HTML

javascript - 无法根据选择按预期隐藏数据

javascript - 使用 AngularJS 解析 JSON

javascript - 格式化数组中的数据

javascript - 在嵌套的 promise 链中重新抛出异常

angularjs - Cucumber-java 与 Cucumber.js

javascript - 如何遍历对象的所有属性并删除特定属性AngularJS

javascript - HTML/CSS 缩进可选,JS 缩进强制?