另一个 javascript 数组字母排序困难时期

Another javascript array alphabetical sorting hardtime

我有一个看起来像这样的 array,我怎样才能在不丢失密钥的情况下按字母顺序排序?

var items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];

您可以使用 Object.valuesitems 数组进行排序。

const items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];

items.sort((a, b) => Object.values(a)[0] > Object.values(b)[0]);

console.log(items);

如果对象只有一个键,那么您可以使用 Object.keys 检索该键然后排序:

var items = [
  { '11': 'Edward' },
  { '12': 'Sharpe' },
  { '13': 'Alvin' }
];

items.sort(function(a, b) {
  var akey = Object.keys(a) [0],           // get a's key
      bkey = Object.keys(b) [0];           // get b's key
      
  return a[akey].localeCompare(b[bkey]);   // compare the values using those keys
});

console.log(items);

通过使用Object.keys,由于它们只有一个我们不知道的值,我们可以使用长度属性减一来得到实际的键引用。

var items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];

items.sort(function(a, b){
 var c = Object.keys(a);
 var d = Object.keys(b);
 return a[c[c.length-1]] > b[d[d.length-1]] ? 1: -1;
 }
)

console.log(items);