gpt4 book ai didi

javascript - 使用 .sort 对数组中的数据进行 asc 或 desc 排序

转载 作者:行者123 更新时间:2023-12-01 01:30:00 26 4
gpt4 key购买 nike

我正在从 json 文件获取信息,并且我正在尝试排序 asc 和 desc。这是我到目前为止的代码:

    $scope.fromLessToMore = function(){
var filteringBy = [];

$http.get('/app/json/file.json')
.then(function(data){
$scope.listOfProducts = data.data.products;

for(var i = 0; i< $scope.listOfProducts.length; i++){
if($scope.listOfProducts[i].id === $scope.inside){
filteringBy.push($scope.listOfProducts[i]);
}
}

//$scope.normalData = filteringBy;
$scope.dataOnFilter = filteringBy.sort((a, b) => (a.price > b.price) ? 1 : ((b.price > a.price) ? -1 : 0));
});

}

如您所见,我正在使用 filteringBy.sort((a, b) => (a.price > b.price) ? 1 : ((b.price > a.price) ? - 1 : 0)); 它可以工作,但是数字的顺序如下:

1 美元、100 美元、1000 美元、2 美元、200 美元、3 美元、30 美元

如何才能正确订购($1、$2、$3、$30...)?我尝试过 ES6:filteringBy.sort((a,b) => a.price - b.price);filteringBy.sort((a,b) => a - b.price); 但不起作用,并且控制台上没有任何错误。

有人可以帮助我吗?

我正在使用 AngularJs 和 Javascript。

最佳答案

我不鼓励这样排序,但您可以使用 \D 替换非数字值,然后应用排序。

filteringBy = ['$1', '$100', '$1000', '$2', '$200', '$3', '$30'];
var filtered = filteringBy.sort((a, b) => {

var aPrice = parseInt(a.replace(/\D/g,''));
var bPrice = parseInt(b.replace(/\D/g,''));
return (aPrice > bPrice) ? 1 : ((bPrice > aPrice) ? -1 : 0)
});

console.log(filtered);

您应该尝试使用数据库本身的整数。

关于javascript - 使用 .sort 对数组中的数据进行 asc 或 desc 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53368367/

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