AngularJS使用对象属性排序多个对象数组
AngularJS order multiple objects array with object property
我有一个多对象数组:
{
"option_12": {
"id": "0",
"name": "6 x 330ml",
"price": "0.00"
},
"option_14": {
"id": 1,
"name": "12 x 330ml",
"price": "2.00"
},
"option_17": {
"id": 1,
"name": "15 x 330ml",
"price": "4.00"
},
"option_10": {
"id": 1,
"name": "30 x 330ml",
"price": "1.00"
}
}
我正在使用AngularJS Filter orderBy尝试按价格值对对象进行排序。因此,在这种情况下,option_12应该是第一个,option_10应该是第二个。
控制器内:
$scope.pOptions = $filter('orderBy')($scope.pOptions, 'price');
在我的视图中,我正在使用ng选项填充选择选项:
<select ng-model="SelectedPOption" ng-options="option.name for option in pOptions|orderBy:'price'"></select>
这两者都没有任何效果。https://docs.angularjs.org/api/ng/filter/orderBy
select
的标记很好。数组存在一些问题。
- 不要在js中对键使用引号
- 价格应该是数字才能正确排序
- 使用
[]
封装数组的所有元素 - 不要从js中调用
filter
,因为它是从标记中调用的
示例:
$scope.pOptions = [{
id: "0",
name: "6 x 330ml",
price: 0.00
}, {
id: 1,
name: "12 x 330ml",
price: 2.00
}, {
id: 1,
name: "15 x 330ml",
price: 4.00
}, {
id: 1,
name: "30 x 330ml",
price: 1.00
}];
工作示例:https://plnkr.co/edit/n09iupr70zRX56kVrYK9?p=preview
编辑:由于数据类似于从后端API到达的数据,您可以迭代对象键/属性,并使用map将子对象投影到数组:
$scope.pOptions = Object.keys($scope.pOptions).map(function(k) {
var obj = $scope.pOptions[k];
obj.price = parseFloat(obj.price);
return obj;
});
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序