diff --git a/README.md b/README.md index 7a36238..55c552c 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ compare('1.1.1', '1.1.1'); // 0 compare('1.2.3', [1, 2, 3]); // 0 compare('1.2', 2); // -1 compare(3, [2, 3, 4]); // -1 +compare('1.0.1', '1'); // 1 compare('1.1.', [1, 2, 3]); // Wrong Params. compare('.1.1', [1, 2, 3]); // Wrong Params. diff --git a/src/index.js b/src/index.js index dc73114..f75e04c 100644 --- a/src/index.js +++ b/src/index.js @@ -43,8 +43,8 @@ define(function (require) { var lenA = a.length; var lenB = b.length; - for (var i = 0; i < Math.min(lenA, lenB); i++) { - var t = compare(a[i], b[i]); + for (var i = 0; i < Math.max(lenA, lenB); i++) { + var t = compare(a[i] || 0, b[i] || 0); // 相同位置的数字不一致,则有大小结论 if (t !== 0) { @@ -52,17 +52,7 @@ define(function (require) { } } - if (lenA === lenB) { - return 0; - } - - var tmp = lenA > lenB ? a : b; - for (var j = i; j < Math.max(lenA, lenB); j++) { - if (tmp[j] === 0) { - return 0; - } - return compare(lenA, lenB); - } + return 0; } /** diff --git a/src/util.js b/src/util.js index 569d0d7..b43fc34 100644 --- a/src/util.js +++ b/src/util.js @@ -34,6 +34,8 @@ define(function (require) { if (this.isString(param)) { return param.split('.').map(parseFloat); } + + return []; } }; }); diff --git a/test/index.js b/test/index.js index 1ae63f9..491344d 100644 --- a/test/index.js +++ b/test/index.js @@ -7,6 +7,8 @@ define(['src/index'], function (compare) { expect(compare(2, '1')).to.equal(1); expect(compare([2], '1')).to.equal(1); expect(compare([2, 3], 2)).to.equal(1); + expect(compare('1.1.0.1', 1.1)).to.equal(1); + expect(compare('1.0.1', '1')).to.equal(1); }); it('should detect 0', function () { expect(compare(1, 1)).to.equal(0); @@ -15,6 +17,8 @@ define(['src/index'], function (compare) { expect(compare([1, 2], '1.2')).to.equal(0); expect(compare([2], 2)).to.equal(0); expect(compare([8], [8, 0, 0])).to.equal(0); + expect(compare('1.1.0.0', 1.1)).to.equal(0); + expect(compare('1.0.0', '1')).to.equal(0); }); it('should detect -1', function () { expect(compare(1, 2)).to.equal(-1); @@ -23,6 +27,8 @@ define(['src/index'], function (compare) { expect(compare([1, 2], '1.4')).to.equal(-1); expect(compare('1.2', 2)).to.equal(-1); expect(compare('1.2', [1, 4])).to.equal(-1); + expect(compare('1', '1.0.1')).to.equal(-1); + expect(compare(1.1, '1.1.0.1')).to.equal(-1); }); it('should detect Wrong Params.', function () { expect(compare(1, '1.2.')).to.equal('Wrong Params.'); diff --git a/test/util.js b/test/util.js index 98dd4d7..95da59f 100644 --- a/test/util.js +++ b/test/util.js @@ -6,6 +6,7 @@ define(function (require) { var d = '.1.1'; var e = '1.2.3.'; var f = '3'; + var g = {}; describe('test', function () { it('should detect Number', function () { expect(util.isNumber(a)).to.equal(true); @@ -34,6 +35,7 @@ define(function (require) { expect(util.toArray(a)).to.deep.equal([20]); expect(util.toArray(b)).to.deep.equal([1, 2, 3]); expect(util.toArray(c)).to.deep.equal([1, 0, 3]); + expect(util.toArray(g)).to.deep.equal([]); }); }); });