Javascript 将对象推入数组时保留对象键值顺序
当使用过滤器对对象中的元素进行排序,然后将其推送到数组中时,它将丢失排序并使用键的字母顺序。插入数组后如何保持排序Javascript 将对象推入数组时保留对象键值顺序,javascript,angularjs,Javascript,Angularjs,当使用过滤器对对象中的元素进行排序,然后将其推送到数组中时,它将丢失排序并使用键的字母顺序。插入数组后如何保持排序 app.controller('MainCtrl', function($scope, $filter) { var bigArr = []; var arr = [ { "Type1" : "Canada", "ColPos" : 3 }, { "Type2" :
app.controller('MainCtrl', function($scope, $filter) {
var bigArr = [];
var arr = [
{
"Type1" : "Canada",
"ColPos" : 3
},
{
"Type2" : "UK",
"ColPos" : 1
},
{
"Type3" : "US",
"ColPos" : 2
},
{
"Type4" : "Madagascar",
"ColPos" : 0
},
]
var ordered = $filter('orderBy')(arr,'ColPos');
console.log(ordered);
var obj = _.assign.apply(_, ordered);
console.log(obj)
bigArr.push(obj);
console.log(bigArr); // ordering is lost
});
演示:排序丢失,因为它实际上不存在,事实上ES5确实指定对象键不是以特殊方式排序的,并且依赖于浏览器的实现,如上所述: 枚举属性的机制和顺序(中的步骤6.a) 未指定第一种算法(第二种算法中的步骤7.a) 简短回答:你不能依靠这个结构来完成这项工作