如何对Excel中的列进行比较(小于)

时间:2018-01-15 12:19:16

标签: javascript typescript

我使用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; ?

4 个答案:

答案 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码求和并比较总数:

&#13;
&#13;
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;
&#13;
&#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]);
}