gpt4 book ai didi

javascript - 按定义的顺序对数组进行排序

转载 作者:行者123 更新时间:2023-11-28 17:10:09 24 4
gpt4 key购买 nike

我已经尝试了几个答案,但似乎没有任何效果。我正在处理一些数据并将其放入数组中。为此,我有以下内容

let aggData = [];

for (let i = 0; i < data.length; i++) {
let flag = data[i]['Category'].replace(/[_]/g, " ");
flag = flag.toLowerCase()
.split(' ')
.map((s) => s.charAt(0).toUpperCase() + s.substring(1))
.join(' ');

aggData.push({
"Flag": flag,
"Freq": data[i]['Count']
});
}
console.log( JSON.stringify( aggData ) );

上面的输出如下

[
{"Flag":"Four","Freq":123},
{"Flag":"One","Freq":234},
{"Flag":"Three","Freq":345},
{"Flag":"Two Days","Freq":456}
]

所以看起来它是根据字母顺序自然排序的。我需要它按照我定义的顺序排列,更具体地说是这样的

let order = ["Three", "One", "Two Days", "Four"];

let arr = aggData.sort(function(a,b) {
return order.indexOf( a.key ) > order.indexOf( b.key );
});

console.log( 'Ordered: ', JSON.stringify( arr ) );

上面返回的顺序与以前完全相同。我怎样才能按照我需要的方式订购它?

谢谢

最佳答案

您需要获取正确的属性Flag并采用增量而不是 bool 值。

顺便说一句,Array#sort 改变了数组。

var aggData = [{ Flag: "Four", Freq: 123 }, { Flag: "One", Freq: 234 }, { Flag: "Three", Freq: 345 }, { Flag: "Two Days", Freq: 456 }],
order = ["Three", "One", "Two Days", "Four"];

aggData.sort(function (a, b) {
return order.indexOf(a.Flag) - order.indexOf(b.Flag);
});

console.log(aggData);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 按定义的顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670666/

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