转换对象数组以在javascript中进行排序?

Posted

技术标签:

【中文标题】转换对象数组以在javascript中进行排序?【英文标题】:Converting array of objects for sorting in javascript? 【发布时间】:2019-10-01 16:53:22 【问题描述】:

我正在尝试在我的视图中创建一个可排序的列表。每个行条目都作为一个对象存储在数组中,字符串值会打乱排序。

代码在 Angularjs 中。

我尝试了多种不同的创建列表的方法,虽然列表的排序功能有效,但值本身的排序不正确。我相信这是因为大多数排序错误的值是字符串而不是整数。

数据示例:

$scope.Info =  length 14
Object InformationID: 100, fiscalYear: 2019, Number: "9", endDate: "2019-11-09T00:00:00" …
...

我尝试过的代码:

$scope.Info = ;
$scope.number = [];

ContractsService.getInformation()
.then(function (results) 
    $scope.Info = results.data;
    angular.forEach($scope.Info, function (value) 
        $scope.number.push(value.Number);
    


$scope.save = function (Detail) 
[not needed in example]

用于视图的循环显示:

<tr ng-repeat="Detail in Info | orderBy:rfrorder.Orderby:rfrorder.reverse">

我需要对 $scope.number 进行保存验证,以确保尚未使用该数字,因此将这些字段分开就可以了。但对于其余部分,我很确定我必须循环遍历 forEach 并转换字符串字段,然后以某种方式将转换后的值用作视图中的对象。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

要将Number 字段从字符串转换为数字:

$scope.Info.forEach(_ => _.Number = (+_.Number));

有关详细信息,请参阅

MDN javascript Reference - array.forEach

【讨论】:

以上是关于转换对象数组以在javascript中进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

通过Javascript中给定的不完整订单数组对对象数组进行排序

按对象属性对 javascript 对象数组进行排序

如何使用正则表达式对数组中的 Javascript 对象进行排序

如何通过嵌套对象属性对 JavaScript 对象数组进行排序?

按对象属性对 javascript 对象数组进行排序

基于对象属性对数组进行排序 - Javascript [重复]