gpt4 book ai didi

javascript - AngularJS 使用对象属性对多个对象数组进行排序

转载 作者:行者123 更新时间:2023-12-03 07:07:58 25 4
gpt4 key购买 nike

我有一个多个对象数组:

{
"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 应该是第二个。

在 Controller 中:

$scope.pOptions = $filter('orderBy')($scope.pOptions, 'price');

在我看来,我使用 ng-options 填充选择选项:

<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 一样到达,您可以迭代对象键/属性并使用映射将子对象投影到数组:

$scope.pOptions = Object.keys($scope.pOptions).map(function(k) {
var obj = $scope.pOptions[k];
obj.price = parseFloat(obj.price);
return obj;
});

关于javascript - AngularJS 使用对象属性对多个对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36731636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com