尝试使用ES6 arrayObj.sort(a,b) => a.property.localeCompare(b.property)
语法,但出现错误:
TypeError:属性。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))
2条答案
按热度按时间bhmjp9jg1#
localeCompare
是method ofString
,但a.itemIndex
是Number
,因此该方法对该属性不可用。要按
itemIndex
排序,请对两个Number
使用减法:要按
itemFmtName
排序,请对两个String
使用localeCompare
:enxuqcxy2#
如前所述,localCompare处理字符串。
下面是一个helper函数,它检查sort属性是字符串还是数字。