我有一个必须排序的字符串数组:
['1.2.3', '1.5.2', '1.23', '1.20.31']
是否可以对数组进行排序,以便在将字符串按 1.2.3
之类的点拆分为 ['1','2', '3']
我们与另一个数组逐个位置比较(如 Python 元组比较)?
预期结果
['1.2.3', '1.5.2' '1.20.31', '1.23']
我知道可以使用原生 JavaScript .sort
和比较函数获取 2 个对象,但我不能使用 JS 排序,因为我不能修改原始数组。是否可以使用 Lodash 的 _.sortBy
希望您提供关键功能?
最佳答案
使用 Vanilla.js
的解决方案:
var data = ['1.2.3', '1.5.2', '1.23', '1.20.31'];
function customSort(d) {
return d.map(function (a) {
return a.split('.').map(Number);
}).sort(function (a, b) {
var l = 0, m = Math.min(a.length, b.length);
while (l < m && a[l] === b[l]) {
l++;
}
return l === m ? a.length - b.length : a[l] - b[l];
}).map(function (a) {
return a.join('.');
});
}
document.write('<pre>sorted array ' + JSON.stringify(customSort(data), 0, 4) + '</pre>');
document.write('<pre>original array ' + JSON.stringify(data, 0, 4) + '</pre>');
关于javascript - 如何使用 Lodash 在数字数组中按位置排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972076/