我有这样的数据
我正在尝试像这样
$initialArrayBTC.sort(function (a, b) {
return b.q - a.q //Trying to sort is on the base of "q" in descending order
});
但是,尽管我查看了许多stackoverflow答案,但这似乎不起作用。谁能帮我这可能是什么问题?
编辑,这是我在对象内部的所有数据
示例代码
var $initialArrayBTC = [];
$initialArrayBTC['A'] = {
q: "3598"
};
$initialArrayBTC['B'] = {
q: "123"
};
$initialArrayBTC['C'] = {
q: "9999"
};
console.log($initialArrayBTC);
$initialArrayBTC.sort(function(a, b) {
return b.q - a.q //Trying to sort is on the base of "q" in descending order
});
console.log($initialArrayBTC);
答案 0 :(得分:2)
您可以通过按需要的顺序创建属性来构建新对象,但这可能仅适用于不是整数(作为数组索引的数字)作为键的情况,并且可能不适用于所有浏览器。
您可以先获取一个对象,然后对其进行键控,对它们进行排序,然后将已排序的键用于已排序的输出。
var $initialArrayBTC = {};
$initialArrayBTC['A'] = {q: "3598"};
$initialArrayBTC['B'] = {q: "123"};
$initialArrayBTC['C'] = {q: "9999"};
var keys = Object.keys($initialArrayBTC).sort(function (a, b) {
return $initialArrayBTC[b].q - $initialArrayBTC[a].q;
});
keys.forEach(k => console.log($initialArrayBTC[k]));
答案 1 :(得分:1)
看起来您的初始实例是一个对象,而不是数组。您可以抓取其键,按值对键排序,然后重建对象:
const $initialArrayBTC = {
A: {q: '3598'},
B: {q: '123'},
C: {q: '9999'}
};
const result = Object.keys($initialArrayBTC)
.sort((key1, key2) => $initialArrayBTC[key2].q - $initialArrayBTC[key1].q)
.map(key => ({[key]: $initialArrayBTC[key]}));
console.log(result);