Javascript 按定义的顺序对数组排序

Javascript 按定义的顺序对数组排序,javascript,arrays,Javascript,Arrays,我试了好几个答案,但似乎都不管用。我正在处理一些数据并将其放置到一个数组中。要做到这一点,我有以下几点 let aggData = []; for (let i = 0; i < data.length; i++) { let flag = data[i]['Category'].replace(/[_]/g, " "); flag = flag.toLowerCase() .split(' ') .map((s) => s.char

我试了好几个答案,但似乎都不管用。我正在处理一些数据并将其放置到一个数组中。要做到这一点,我有以下几点

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 ) );
以上返回的顺序与之前完全相同。我怎样才能按我要求的方式订购


谢谢

您需要获得正确的属性
标志
,并采用增量而不是布尔值

顺便说一句,变异数组

var aggData=[{Flag:“四”,Freq:123},{Flag:“一”,Freq:234},{Flag:“三”,Freq:345},{Flag:“两天”,Freq:456}],
订单=[“三”、“一”、“两天”、“四”];
aggData.sort(函数(a,b){
退货订单.indexOf(a.Flag)-订单.indexOf(b.Flag);
});
console.log(aggData)

.as console wrapper{max height:100%!important;top:0;}
您需要获得正确的属性
标志
,并采用增量而不是布尔值

顺便说一句,变异数组

var aggData=[{Flag:“四”,Freq:123},{Flag:“一”,Freq:234},{Flag:“三”,Freq:345},{Flag:“两天”,Freq:456}],
订单=[“三”、“一”、“两天”、“四”];
aggData.sort(函数(a,b){
退货订单.indexOf(a.Flag)-订单.indexOf(b.Flag);
});
console.log(aggData)

.as控制台包装{max height:100%!important;top:0;}
您需要做的就是正确使用
排序
,返回一个数字而不是布尔值。。。当然,使用正确的财产

let数据=[
{“标志”:“四”,“频率”:123},
{“标志”:“一”,“频率”:234},
{“标志”:“三”,“频率”:345},
{“标志”:“两天”,“频率”:456}
]
让订单=[“三”、“一”、“两天”、“四”];
设arr=data.sort(函数(a,b){
退货订单.indexOf(a.标志)-订单.indexOf(b.标志);
});

log('Ordered:',JSON.stringify(arr))您需要做的就是正确使用
排序
,返回一个数字而不是布尔值。。。当然,使用正确的财产

let数据=[
{“标志”:“四”,“频率”:123},
{“标志”:“一”,“频率”:234},
{“标志”:“三”,“频率”:345},
{“标志”:“两天”,“频率”:456}
]
让订单=[“三”、“一”、“两天”、“四”];
设arr=data.sort(函数(a,b){
退货订单.indexOf(a.标志)-订单.indexOf(b.标志);
});

log('Ordered:',JSON.stringify(arr))看你有打字错误。使用
a.Flag
并在比较功能中进行减法,以查看您的输入错误。使用
a.Flag
并在比较函数中进行减法