Javascript 角度ng重复(键,值)|按值排序
是否可以按如下方式订购阵列:Javascript 角度ng重复(键,值)|按值排序,javascript,angularjs,ng-repeat,Javascript,Angularjs,Ng Repeat,是否可以按如下方式订购阵列: ng-repeat="(key, value) in sets | orderBy: value['ordering']" 这是我的阵列: [{ "item 1": { "type": "text", "value": "1", "ordering": 1 }, "item 2": { "type": "text", "value": "4", "ordering": 3 }, "item 3": { "type": "text",
ng-repeat="(key, value) in sets | orderBy: value['ordering']"
这是我的阵列:
[{
"item 1": {
"type": "text",
"value": "1",
"ordering": 1
},
"item 2": {
"type": "text",
"value": "4",
"ordering": 3
},
"item 3": {
"type": "text",
"value": "8",
"ordering": 2
}
}]
它应该输出:项目1、项目3、项目2
编辑:我也需要钥匙如果您不需要钥匙,您可能不想尝试一下:
您误解了数组的含义 数组由一个大对象组成,不能在javascript中对对象进行排序。修复结构,使您拥有多个对象的数组
[{
"item": 1,
"type": "text",
"value": "1",
"ordering": 1
}, {
"item": 2,
"type": "text",
"value": "4",
"ordering": 3
}, {
"item": 3,
"type": "text",
"value": "8",
"ordering": 2
}]
然后您可以使用常规阵列中继器
ng-repeat="set in sets | orderBy: 'ordering'"
谢谢你的帮助,但我不能改变结构。您知道定制过滤器是否可以实现这一点吗?2选择,将数据映射到数组或使用其他答案中建议的实用程序。映射到数组并不困难,是的,您可以使用过滤器。过滤器实际上是任何函数。obj in(map | myMapToArray)我需要使用键。角度文档对此非常清楚。“您需要注意,JavaScript规范没有定义为对象返回的键的顺序”,“如果不需要,建议的解决方法是将对象转换为数组,该数组在提供给
ngRepeat
之前按您喜欢的顺序排序。”