我使用typescript,我按照Excel的方式索引一些数据。我的意思是A,B,C,...... Z,AA,AB,......
现在我想做一些比较,比如:
var X1 = "A";
var X2 = "C"
var X3 = "AB"
if (X1 < X2) {
//...
}
if (X2 < X3) {
//...
}
但是比较X2(= C)&lt; X3(= AB)返回false,因为逐字母比较。
如何进行比较(类似于Excel)返回(列)&#34; C&#34; &LT; &#34; AB&#34; ?
答案 0 :(得分:0)
这可能就像......
function compare(a, b) {
a = a.split('');
b = b.split('');
return a.some((e, i) => b[i] && a < b[i]);
}
var X2 = "C"
var X3 = "AB"
console.log(compare(X2, X3));
console.log(compare(X3, X2));
答案 1 :(得分:0)
您可以对每个字符ASCII码求和并比较总数:
function sum(str) {
return str.split('').reduce((acc, it) => acc + it.charCodeAt(), 0);
}
function compare(a, b) {
return sum(a) - sum(b);
}
console.log('A lower than C', compare('A', 'C') < 0);
console.log('C lower than AB', compare('C', 'AB') < 0);
&#13;
答案 2 :(得分:0)
Javascript已经可以比较字符串,这几乎适用于您的情况,但在您的情况下,如果长度较小,则字符串是较低的等级,无论字母。你可以这样做:
String.prototype.lessThan = function(rhs) {
return this.length < rhs.length || (this < rhs);
}
var X1 = "A";
var X2 = "C"
var X3 = "AB"
console.log( X1.lessThan(X2) );
console.log( X2.lessThan(X3) );
console.log( `AB` .lessThan `A` );
console.log( `AB` .lessThan `BC` );
如果需要,您可以将该功能命名为更合适的功能。
答案 3 :(得分:0)
这是我所拥有的(部分归功于Gabriel Bleu)
String.prototype.lessThan = function (arg: string): boolean {
// For comparing index like Excel columns
// A, B, C, ... AA, AB, AC, ...
var aa = this.split('');
var bb = arg.split('');
if (aa.length < bb.length) return true;
if (aa.length > bb.length) return false;
return aa.some((e, i) => bb[i] && aa[i] < bb[i]);
}