bisect()函数是D3.js中的内置函数,该函数接受一个值作为其参数之一,并返回索引以将该元素插入作为另一个参数传递的数组中,以在指定范围内或整个数组中保持排序顺序。
该函数在默认情况下会在查找索引时考虑整个数组,除非通过将start和end作为参数传递给函数来指定范围。
该二进制函数搜索值并检查它是否已在范围内。如果找到,它将被插入到该元素的左侧。
用法:
d3.bisect(array, value, start, end)
参数:该函数接受上面提到的和下面描述的四个参数:
- array:此强制参数包含一个元素数组。
- value:这也是必填参数,其中包含要在数组中插入的值。
- start:这是一个可选参数,用于指定范围的起始索引。
- end:这是一个可选参数,用于指定范围的最后一个索引。
返回值:该函数返回一个整数值,该整数值表示需要在数组中插入值以保持排序顺序的索引。
以下程序说明了d3.bisect()函数的用法:
范例1:该程序说明了仅传递两个必需参数的d3.bisect()的用法。
<!DOCTYPE html>
<html>
<head>
<title>D3.js d3.bisect() Function</title>
<script src='https://d3js.org/d3.v4.min.js'>
</script>
</head>
<body>
<script>
var array = [42, 43, 53, 61, 71, 87, 91];
var value1 = 63;
var pos = d3.bisect(array, value1);
document.write(value1 + " needs to be inserted at "
+ pos + "<br>");
var value2 = 80;
var pos2 = d3.bisect(array, value2);
document.write(value2 + " needs to be inserted at "
+ pos2);
</script>
</body>
</html>
输出:
63 needs to be inserted at 4 80 needs to be inserted at 5
范例2:该程序说明了将所有四个参数传递给该函数的d3.bisect()的用法。
<!DOCTYPE html>
<html>
<head>
<title>D3.js d3.bisect() Function</title>
<script src='https://d3js.org/d3.v4.min.js'>
</script>
</head>
<body>
<script>
var array = [42, 34, 27,
53, 61, 71, 33, 51, 87, 91];
var value1 = 63;
var pos = d3.bisect(array, value1, 2, 5);
document.write(value1 + " needs to be inserted at "
+ pos + "<br>");
var pos2 = d3.bisect(array, value1, 6, 9);
document.write(value1 + " needs to be inserted at "
+ pos2);
</script>
</body>
</html>
输出:
63 needs to be inserted at 5 63 needs to be inserted at 8
参考:https://devdocs.io/d3~5/d3-array#bisect
相关用法
- d3.js d3.map.set()用法及代码示例
- PHP next()用法及代码示例
- p5.js value()用法及代码示例
- CSS url()用法及代码示例
- d3.js zip()用法及代码示例
- d3.js d3.map.has()用法及代码示例
- p5.js mag()用法及代码示例
- PHP Ds\Map xor()用法及代码示例
- d3.js d3.min()用法及代码示例
- d3.js d3.set.add()用法及代码示例
- PHP Ds\Set last()用法及代码示例
- PHP Ds\Set first()用法及代码示例
- PHP pow( )用法及代码示例
- PHP Ds\Set xor()用法及代码示例
- d3.js d3.mean()用法及代码示例
注:本文由纯净天空筛选整理自SHUBHAMSINGH10大神的英文原创作品 D3.js bisect() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。