📅  最后修改于: 2023-12-03 15:00:17.843000             🧑  作者: Mango
在D3.js中,bisector()函数用于返回一个适合于给定数据集的二分搜索函数,以便查找给定值并确定其将在数据集中的位置。这个函数使用数据集的map函数和一个可选的比较函数来映射数据,可以用于在数组、对象数组和段落中查找值。
d3.bisector(accessor).left(data, x[, lo[, hi]])
d3.bisector(accessor).right(data, x[, lo[, hi]])
accessor
:一个指定如何访问数组元素的函数,用于计算排序键的值。data
:要操作的数据。可以是数组、对象数组或段落。x
:要查找的值。lo
:要搜索的最低索引值,默认为0。hi
:要搜索的最高索引值,默认为该数据的长度。这两个函数返回一个查找指定值的索引的函数,其中d3.bisector(accessor).left
返回要插入它的索引,而d3.bisector(accessor).right
返回下一个元素的索引。
var data = [1, 2, 3, 4, 5];
var bisect = d3.bisector(function(d) { return d; }).left;
console.log(bisect(data, 3)); // 输出 2(3前面有2个元素)
console.log(bisect(data, 6)); // 输出 5(6要放在5后面)
var data = [{name: 'John', age: 20}, {name: 'Jane', age: 25}, {name: 'Jack', age: 30}];
var bisect = d3.bisector(function(d) { return d.age; }).right;
console.log(bisect(data, 27)); // 输出 2(27要放在30前面)
console.log(bisect(data, 15)); // 输出 0(15要放在20前面)
D3.js bisector()函数是一个非常实用的函数,可以用于查找数组或对象数组中特定值的索引。通过将比较函数作为参数传递给bisector()函数,可以轻松地定义排序键以及如何获取排序键的值。在大多数情况下,bisector()函数可以用于查找数据中特定值的位置。