Si tiene una matriz anidada de números (arrays = [[1, 2], [20, 3]]
), nido d3.max:
var max = d3.max(arrays, function(array) {
return d3.max(array);
});
o equivalentemente, utilice :
var max = d3.max(arrays.map(function(array) {
return d3.max(array);
}));
Si desea ignorar s Tring valores, puede utilizar array.filter ignorar cadenas:
var max = d3.max(arrays, function(array) {
return d3.max(array.filter(function(value) {
return typeof value === "number";
}));
});
Alternativamente, si conoce la cadena siempre está en la primera posición, se puede usar array.slice que es un poco más eficiente:
var max = d3.max(arrays, function(array) {
return d3.max(array.slice(1));
});
Otra opción más es usar una función de acceso que devuelve NaN
para valores que no son números. Esto hará que d3.max ignore esos valores. Convenientemente, JavaScript incorporado en Number
función hace exactamente esto, por lo que puede decir:
var max = d3.max(arrays, function(array) {
return d3.max(array, Number);
});
que tienen el mismo problema pero cuando trato de aplicar el filtro de matriz pero tengo el siguiente error: TypeError: undefined no es una función (evaluando 'array.filtro (función (valor) \t \t { \t \t \t \t retorno valor typeof === "número"; \t \t}) '). Mi variable de escena es una matriz de objetos cargados desde un json. Qué está mal ? –