returning `undefined` rather than `NaN` to comply with d3.mean as @mbostock suggested
This commit is contained in:
Родитель
b99ab732d1
Коммит
be6ad60c5e
|
@ -171,7 +171,7 @@ d3 = function() {
|
|||
};
|
||||
d3.variance = function(array, f) {
|
||||
var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;
|
||||
if (n < 2) return NaN;
|
||||
if (n < 2) return undefined;
|
||||
if (arguments.length === 1) {
|
||||
while (++i < n) {
|
||||
if (d3_number(a = array[i])) {
|
||||
|
@ -191,7 +191,7 @@ d3 = function() {
|
|||
}
|
||||
}
|
||||
}
|
||||
return j ? s / (j - 1) : NaN;
|
||||
return j ? s / (j - 1) : undefined;
|
||||
};
|
||||
d3.deviation = function(array, f) {
|
||||
var v = f ? d3.variance(array, f) : d3.variance(array);
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -6,7 +6,7 @@ d3.variance = function(array, f) {
|
|||
s = 0,
|
||||
i = -1,
|
||||
j = 0;
|
||||
if(n < 2) return NaN;
|
||||
if(n < 2) return undefined;
|
||||
if (arguments.length === 1) {
|
||||
while (++i < n){
|
||||
if (d3_number(a = array[i])){
|
||||
|
@ -26,5 +26,5 @@ d3.variance = function(array, f) {
|
|||
}
|
||||
}
|
||||
}
|
||||
return j ? (s / (j-1)) : NaN;
|
||||
return j ? (s / (j-1)) : undefined;
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ suite.addBatch({
|
|||
return d3.deviation;
|
||||
},
|
||||
"returns the sd value for numbers": function(deviation) {
|
||||
assert.isNaN(deviation([1]));
|
||||
assert.isUndefined(deviation([1]));
|
||||
assert.equal(deviation([5, 1, 2, 3, 4]), 1.5811388300841898);
|
||||
assert.equal(deviation([20, 3]), 12.020815280171307);
|
||||
assert.equal(deviation([3, 20]), 12.020815280171307);
|
||||
|
@ -26,11 +26,11 @@ suite.addBatch({
|
|||
assert.equal(deviation([-Number.MAX_VALUE, -Number.MAX_VALUE]), 0);
|
||||
},
|
||||
"returns undefined for empty array": function(deviation) {
|
||||
assert.isNaN(deviation([]));
|
||||
assert.isNaN(deviation([null]));
|
||||
assert.isNaN(deviation([undefined]));
|
||||
assert.isNaN(deviation([NaN]));
|
||||
assert.isNaN(deviation([NaN, NaN]));
|
||||
assert.isUndefined(deviation([]));
|
||||
assert.isUndefined(deviation([null]));
|
||||
assert.isUndefined(deviation([undefined]));
|
||||
assert.isUndefined(deviation([NaN]));
|
||||
assert.isUndefined(deviation([NaN, NaN]));
|
||||
},
|
||||
"applies the optional accessor function": function(deviation) {
|
||||
assert.equal(d3.deviation([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.mean(d); }), 2.1213203435596424);
|
||||
|
|
|
@ -11,7 +11,7 @@ suite.addBatch({
|
|||
return d3.variance;
|
||||
},
|
||||
"returns the variance value for numbers": function(variance) {
|
||||
assert.isNaN(variance([1]));
|
||||
assert.isUndefined(variance([1]));
|
||||
assert.equal(variance([5, 1, 2, 3, 4]), 2.5);
|
||||
assert.equal(variance([20, 3]), 144.5);
|
||||
assert.equal(variance([3, 20]), 144.5);
|
||||
|
@ -25,12 +25,12 @@ suite.addBatch({
|
|||
assert.equal(variance([Number.MAX_VALUE, Number.MAX_VALUE]), 0);
|
||||
assert.equal(variance([-Number.MAX_VALUE, -Number.MAX_VALUE]), 0);
|
||||
},
|
||||
"returns NaN for empty array": function(variance) {
|
||||
assert.isNaN(variance([]));
|
||||
assert.isNaN(variance([null]));
|
||||
assert.isNaN(variance([undefined]));
|
||||
assert.isNaN(variance([NaN]));
|
||||
assert.isNaN(variance([NaN, NaN]));
|
||||
"returns undefined for empty array": function(variance) {
|
||||
assert.isUndefined(variance([]));
|
||||
assert.isUndefined(variance([null]));
|
||||
assert.isUndefined(variance([undefined]));
|
||||
assert.isUndefined(variance([NaN]));
|
||||
assert.isUndefined(variance([NaN, NaN]));
|
||||
},
|
||||
"applies the optional accessor function": function(variance) {
|
||||
assert.equal(d3.variance([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.mean(d); }), 4.5);
|
||||
|
|
Загрузка…
Ссылка в новой задаче