gpt4 book ai didi

javascript - 在Javascript中重新排序对象中的值数组

转载 作者:行者123 更新时间:2023-12-04 07:21:56 24 4
gpt4 key购买 nike

我有以下对象,我正在尝试对其进行排序,以便标签始终为“高、中、低”。我得到它们的顺序并不总是相同,所以我想添加另一层顺序以确保我得到“高、中、低”
前:

status:{
label:['mid', 'high', 'low'],
data:[4, 3, 1]
}
后:
status:{
label:['high', 'mid', 'low'],
data:[3, 4, 1]
}

最佳答案

对这两个“链接”数组进行排序的最简单方法是将它们临时组合成一个数组:

const status = {
label: ['mid', 'high', 'low'],
data: [4, 3, 1]
};

// Combine the two arrays into an array of pairs
const pairs = status.label.map((label, index) => [label, status.data[index]]);
console.log('pairsBefore', pairs); // [ ['mid', 4 ], ['high', 3 ], ['low', 1 ]]

// Used for sorting
const ORDER = ['high', 'mid', 'low'];

// Sort the pairs
pairs.sort((a, b) => {
const [labelA, dataA] = a;
const [labelB, dataB] = b;
// Gives 0 for 'high', 1 for 'mid' and 2 for 'low'
const indexA = ORDER.indexOf(labelA);
const indexB = ORDER.indexOf(labelB);
// Substract for A and B, see how Array.prototype.sort works
return indexA - indexB;
});
console.log('pairsAfter', pairs); // [ ['high', 3 ], ['mid', 4 ], ['low', 1 ]]

// Split it back into two arrays
const statusSorted = {
label: pairs.map(pair => pair[0]),
data: pairs.map(pair => pair[1]),
};
console.log('statusSorted', statusSorted);
//{
// label: ['high', 'mid', 'low'],
// data: [3, 4, 1],
//}

关于javascript - 在Javascript中重新排序对象中的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68445153/

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