排序(Ordering)(这些数组的方法中,都会忽略无效的值,比如undefined,NaN)
d3.ascending(a,b),升序排序。如果a<b返回-1,a>b返回1,a=b返回0
d3.descending(a,b),降序排序。如果a<b返回-1,a>b返回1,a=b返回0
注:这两个比较函数都是自然排序(natural),可以与数组内置的sort方法一起使用,sort方法在没有指定比较函数的情况下,默认为字典排序(lexicographic,按照字母顺序排序)
var dataset = [33,12,92,28,6];
var asc = dataset.sort(d3.ascending); //6,12,28,33,92
var desc = dataset.sort(d3.descending); //92,33,28,12,6
var sort = dataset.sort(); // 12,28,33,6,92
d3.min(array[,accessor]),返回给定数组中自然排序最小的值。如果数组为空,则返回undefined。如果指定了accessor参数,相当于在计算最小值之前调用了array.map(accessor)方法。字符串元素的比较注重于字符的顺序,比如["20","3"]的最小值是"20",而[20,3]中最小的值是3
d3.max(array[,accessor]),返回给定数组中自然排序最大的值。其余的同d3.min()
d3.extent(array[,accessor]),返回给定数组自然排序的最小值和最大值,等同于同时调用d3.min和d3.max
d3.sum(array[,accessor]),返回给定数组的和。如果数组为空,返回0
d3.mean(array[,accessor]),返回给定数组的平均数,如果数组为空,返回undefined
d3.median(array[,accessor]),返回给定数组的中位数(如果为奇数,返回中间那个数,如果为偶数,返回中间两个数的平均数)
d3.quantile(numbers,p),返回给定数组的p分位,p的范围是0-1。比如中位数可以由p = 0.5计算,第一个四分位数是p = 0.25,第三个四分位数是p = 0.75。这个方法需要数组numbers包含数字且数字升序顺序排列,例如使用 d3.ascending排序。
d3.variance(array[,accessor]),返回给定数组的无偏总体方差。如果数组的长度小于2,返回undefined
d3.deviation(array[,accessor]),返回数组的标准差,即方差的平方根。如果数组的长度小于2,返回undefined
d3.bisectLeft(array,x[,lo[,hi]]),获取数组项的左侧位置。bisectLeft()所使用的数组必须经过递增排序。第二个参数用于指定某项的位置,如果此项在数组中存在,则返回此位置的左边。如果此项在数组中不存在,则返回第一个大于此项的值得左边。
//定义数组
var numbers = [10,13,16,19,22,25]
//获取16左边在数组中的位置
var iLeft = d3.bisectLeft(numbers.sort(d3.ascending),16);
console.log(iLeft) //2
// 在iLeft位置处,删除0项,出入66
numbers.splice(iLeft,0,66)
//打印新数组
console.log(numbers) // [10, 13, 66, 16, 19, 22, 25]
/**