試圖使用ES6 arrayObj.sort(a,b) => a.property.localeCompare(b.property) 語法,但得到錯誤:
型別錯誤:a.property.localeCompare不是一個函式。
我認為localeCompare不在范圍內,但不明白如何將其系結到排序的范圍內,也許是因為資料被存盤在代理中? 我也在VueJS 3中作業,但不認為這與這個問題有關。
myData =
Proxy {0: {...}, 1: {...}, 2: {...}, 3: {...}, 4: {...}}。
[[Handler]]。Object].
[[Target]]。Array(5)
0: {itemIndex: 1, itemFmt: 2, itemFmtName: 'Call To Order', guid: 'd66af412-00a0-4c49-b8b5-abaefb79fed0', maxCt: 1, ...}。
1: {itemIndex: 2, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '9f7b9d34-3fcb-42c7-866e-a56f71a8aa4f', maxCt: 0, ...}。
2: {itemIndex: 4, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '406bea5e-1cb0-4d90-96e9-9b80b64ff8ba', maxCt: 0, ...}。
3: {itemIndex: 5, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: 'ad9aacda-5100-4eef-9ead-c61e1ec0c285', maxCt: 0, ...}。
4: {itemIndex: 7, itemFmt: 3, itemFmtName: 'Roll Call', guid: '1715f7a3-066d-4787-8233-a36df2a729a9', maxCt: 1, ...}。
myData.sort((a, b) => a。 itemIndex.localeCompare(b.itemIndex))
uj5u.com熱心網友回復:
要按 要按
標籤: 上一篇:根據串列中的值對字典進行排序
localeCompare是String的方法,但是a.itemIndex是Number,所以該方法在該屬性上將不可用。
itemIndex排序,在兩個Numbers上使用減法:
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
const myData = [
{itemIndex: 1, itemFmt: 2, itemFmtName: 'Call To Order', guid: 'd66af412-00a0-4c49-b8b5-abaefb79fed0', maxCt: 1 },
{itemIndex: 2, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '9f7b9d34-3fcb-42c7-866e-a56f71a8aa4f', maxCt: 0}。
{itemIndex: 4, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '406bea5e-1cb0-4d90-96e9-9b80b64ff8ba', maxCt: 0}。
{itemIndex: 5, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: 'ad9aacda-5100-4eef-9ead-c61e1ec0c285', maxCt: 0}。
{itemIndex: 7, itemFmt: 3, itemFmtName: 'Roll Call', guid: '1715f7a3-066d-4787-8233-a36df2a729a9', maxCt: 1}。
]
//按 itemIndex 的升序排序。
myData.sort((a,b) => a.itemIndex - b.itemIndex)
console.log(myData) itemFmtName排序,在兩個String上使用localeCompare:
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
const myData = [
{itemIndex: 1, itemFmt: 2, itemFmtName: 'Call To Order', guid: 'd66af412-00a0-4c49-b8b5-abaefb79fed0', maxCt: 1 },
{itemIndex: 2, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '9f7b9d34-3fcb-42c7-866e-a56f71a8aa4f', maxCt: 0}。
{itemIndex: 4, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: '406bea5e-1cb0-4d90-96e9-9b80b64ff8ba', maxCt: 0}。
{itemIndex: 5, itemFmt: 6, itemFmtName: 'Title/Discussion/Motion', guid: 'ad9aacda-5100-4eef-9ead-c61e1ec0c285', maxCt: 0}。
{itemIndex: 7, itemFmt: 3, itemFmtName: 'Roll Call', guid: '1715f7a3-066d-4787-8233-a36df2a729a9', maxCt: 1}。
]
//按 itemFmtName 按字母順序排序。
myData.sort((a,b) => a。 itemFmtName.localeCompare(b.itemFmtName))
console.log(myData)
