我正在尝试按其值升序对下面数组中的对象进行排序,并获得所需的输出,如下所示:-
var arr = [{"DOA Qty":"0.000665921017598927382910198160","LOS%":"0","FID Valid EC By Part":"0.0041860443283016713761966","Interventions":"0"}]
所需输出 - 按值升序排序:
var desiredarr =[{"LOS%":"0","Interventions":"0","DOA Qty":"0.000665921017598927382910198160","FID Valid EC By Part":"0.0041860443283016713761966"}]
let sorteddataarr: any = Object.values(arr[0]).sort(function (a, b) { return arr[a] - arr[b]; });
alert(JSON.stringify(sorteddataarr)); // not giving result
a[1]-b[1]
==:ASEC
b[1]-a[1]
==:D ESC
试试这个:
var obj =
{
"DOA Qty":"0.000665921017598927382910198160",
"LOS%":"0",
"FID Valid EC By Part":"0.0041860443283016713761966",
"Interventions":"0"
}
var entries = Object.entries(obj)
entries.sort(function(a,b){return a[1]-b[1]});
obj = {};
entries.map(function(item){
obj[item[0]] = item[1];
})
console.log(obj);
也许以下内容会有所帮助,在执行Object.keys
或for something in ...
之类的操作时,对象的键没有特定的顺序,因为顺序对您很重要 我将对象转换为键和值数组:
var arr = [{"DOA Qty":"0.000665921017598927382910198160","LOS%":"0","FID Valid EC By Part":"0.0041860443283016713761966","Interventions":"0"}];
console.log(
arr.map(
object=>
Object.keys(object).map(
key=>[Number(object[key]),key]//your values are not numbers, maybe create better JSON
).sort(
([a],[b])=>a-b
)
//optional, if you rather have [key,value] .map(([value,key])=>[key,value]
)
)
创建一个简单的比较函数。 定义要在函数中使用的键。我使用了值
然后调用 Array.prototype.sort(( 并传入你的比较函数
对于 DESC 或 ASC 顺序,两者之间的唯一区别是切换大于和小于符号
function compareDESC(a, b) {
if (a.value < b.value)
return 1;
if (a.value > b.value)
return -1;
return 0;
}
function compareASC(a, b) {
if (a.value > b.value)
return 1;
if (a.value < b.value)
return -1;
return 0;
}
var arr = [
{
value: 2
},
{
value: 6
},
{
value: 3
},
{
value: 8
},
{
value: 9
},
{
value: 4
},
];
arr.sort(compareDESC)
console.log(arr)
arr.sort(compareASC)
console.log(arr)