如何在 javascript 中的数组中获取所需的排序输出



我正在尝试按其值升序对下面数组中的对象进行排序,并获得所需的输出,如下所示:-

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.keysfor 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)

最新更新