我有一个物体对象。我想按特定顺序显示对象及其值。(不按字母顺序排列)
我怎样才能用角度实现这个目标?这是我的样本对象
var filters = {
language : { someProperty : "prop1", someOther : "prop2" },
country : { resumeProp : "prop", resumeProp2 : false },
destination { resumeProp : "prop", resumeProp2 : false },
};
我想安排示例目的地,国家和语言。
答案 0 :(得分:1)
根据定义,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。
如果原始对象无法修改,则
使用对象的索引创建另一个数组,例如var filtersKey = ['destination', 'country', 'language'];
在该阵列上运行 ng-repeat 。
使用filters[value]
从原始对象获取值,其中value
表示ng-repeat公开的filtersKey中包含的每个字符串。