按字母顺序按值对 Javascript 对象进行排序

时间:2021-02-01 20:03:09

标签: javascript sorting

我有一个 JS 对象如下:

var obj = {"00:11:22:33:44:55" : "AddressB", "66:77:88:99:AA:BB" : "AddressA", "55:44:33:22:11:00" : "AddressC", "AA:BB:CC:DD:EE:FF" : "AddressD"};

如下代码通过key按字母顺序排序:

sorted = Object.keys(obj)
.sort()
.reduce(function (accSort, keySort) 
{
    accSort[keySort] = obj[keySort];
    return accSort;
}, {});

console.log(sorted);

产生输出:

<块引用>

{"00:11:22:33:44:55": "地址B", "55:44:33:22:11:00": "地址C", "66:77:88:99:AA :BB" : "地址 A", "AA:BB:CC:DD:EE:FF" : "地址 D"}

如何按值按字母顺序对对象进行排序,以便输出:

<块引用>

{"66:77:88:99:AA:BB": "地址 A", "00:11:22:33:44:55": "地址 B", "55:44:33:22:11 :00" : "地址C", "AA:BB:CC:DD:EE:FF" : "地址D" }

2 个答案:

答案 0 :(得分:7)

您需要先按 keysvalues 排序,然后使用 .reduce 创建结果有序对象:

const obj = {
  "00:11:22:33:44:55": "AddressB", 
  "66:77:88:99:AA:BB": "AddressA", 
  "55:44:33:22:11:00": "AddressC", 
  "AA:BB:CC:DD:EE:FF": "AddressD"
};

const sorted = Object.keys(obj).sort((a,b) => obj[a].localeCompare(obj[b]))
  .reduce((acc,key) => { acc[key] = obj[key]; return acc; }, {});

console.log(sorted);

答案 1 :(得分:3)

使用 provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" datafile = "F:\Test Database\Database.accdb" conString = provider & datafile myConnection.ConnectionString = conString myConnection.Open() Dim str As String str = "Insert into TABLA([LABELS]) Values (?)" Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 'cmd.Parameters.Add(New OleDbParameter("Panel", CType(Textbox1.Text, String))) Select Case panelCount Case 1 cmd.Parameters.Add("LABELS", CType(TextBox1.Text, String)).Value = "?".Rows(0).Cells(1).Value.ToString() Case 2 cmd.Parameters.Add("LABELS", CType(TextBox1.Text, String)).Value = "?".Rows(0).Cells(2).Value.ToString() End Select Try cmd.ExecuteNonQuery() cmd.Dispose() myConnection.Close() Catch ex As Exception MsgBox(ex.Message) End Try myConnection.Close() 获取键和值的二维数组。按值对其进行排序,然后使用 Object.entries() 创建新对象。

reduce()

相关问题