我有一组对象(键值对)
var data = {
"AnomalyEnableLatch": "false",
"DistLogPeriod": "0",
"AedCooldown": "0",
"AedEnableLatch": "false",
"AedGuardBand": "0",
"AedSensitivity": "0",
"AedWindowSize": "0",
"AnomalyCurrentNoiseFloor": "10",
"AnomalyGuardBandSize": "32",
"AnomalyKsigToStart": "40",
"AnomalyMinSnrToStop": "100",
"AnomalyWindowSize": "651"
};
此列表将是动态列表。
我需要通过两个参数订购
一个以 aed 开头,另一个以异常开头。
实际上,我从api响应中获得了正确的顺序。在处理js时,按顺序自动更改订单。
不应该这样做。我需要做实际订单的工作。
否则我需要更改订单。我需要上面提到的订单
答案 0 :(得分:0)
实际上,订单并没有改变。但是控制台会像那样显示出来。
在使用过滤器之前,请先观察Object.keys(data)
.sort() // sort keys alphabetically
.forEach(function(v, i) {
console.log(v, data[v]); // access properties(keys) alphabetically
});
。它只是无序的对象属性数组。现在,如果你想按字母顺序排序,那么
你可以做的是使用Object.keys(),然后对Array进行排序,然后通过object迭代它。
@PreAuthorize("hasRole('ROLE_ADMIN')")
答案 1 :(得分:0)
如评论所示,您无法对对象中的键进行排序/排序。但您可以按照访问密钥的方式订购。
您可以使用以下JSFiddle来调试或关注SO代码段。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.min.js"></script>
<div ng-app>
<div ng-controller="MyCtrl">
Hello, {{name}}!
<div>
<ul>
<li ng-repeat="k in keys">
{{k}} : {{ data[k] }}</li>
</ul>
</div>
</div>
</div>
&#13;
root
&#13;
答案 2 :(得分:0)
无法保证JavaScript对象中键的顺序。有两种方法可以解决这个问题:
Array.prototype.map
从数据映射构建有序数组。Object.keys
提取密钥,请使用Array.prototype.sort(compareFn)
根据需要对其进行排序。然后,您可以使用方法1 示例代码,用于在给定一组有序键的情况下从地图中获取有序数组:
var data = {...}; //Original data map
var orderedKeys = ["firstKey", "secondKey"]; //Array of preordered keys
var sortedArrayOfMaps = orderedKeys.map(function(key){var o={}; o[key]=data[key]; return o;}) //Use map to get ordered array of objects
我还使用此方法更新了JS Fiddle以供参考