D3.js中对array的使用

由于D3类库和array密切相关,我们有必要讨论一下D3中的数据绑定以及在数组内部运算的方法。

1.D3中的数组

和其他编程语言一样,D3的数组元素可以是数字或者字符等类型,例如:

someData=[20,36,48,59,600,88];

此外,考虑json数据在网络传输中的便利性,D3数组也支持将json对象,如:

someBook=[{name:"book1", price: 50}, {name:"book2", price: 150}, {name:"book3", price: 350}];

2.D3中的数组过滤功能

array有一个filter()方法,这个方法的返回值是array中满足自定义需求的数据数组。例如:

someNumer.filter(function(sn) {return sn >= 40});

这条语句中使用了someNumber这个array的filter方法,它使用了一个function,此function中将someNumber中的每一个元素(命名为sn)进行遍历,如果满足自定义条件(大于等于40),则将此元素拷贝至一个新建的数组中,最后的返回值便是这个数组。

3.绑定,enter()和exit()

D3使用data()方法将数组和选择的CSS元素进行绑定;

enter()方法定义了当数组元素超过已经绑定或者选择的CSS元素的个数时,则生成新的CSS元素,使用新CSS元素与数组中数据进行绑定;

exit()方法定义了当数组元素超过已经绑定或者选择的CSS元素的个数时,则抛弃多余的数组元素。

<html>
<head>
    <meta  http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    <script type="text/javascript" src="d3.js"></script>

</head>
<style>
#borderdiv {
width: 200px;
height: 50px;
border: 1px solid gray;
}
</style>

<body>
    <div id="borderdiv"> </div>
</body>

<script>var someNumbers = [17, 82, 9 ,500, 40];
var smallerNumers = someNumbers.filter(function(e1){return e1 <= 40 ? this : null});
    d3.select("body").selectAll("div")
    .data(smallerNumers)
    .enter()
    .append("div")
    .html(function(sd) {return sd})
    .style("font-weight", "900");
</script>

</html>

上面的代码中,smallerNumber中将会含有17,9,40三个元素,但是只有broderdiv这一个div,所以当执行上面的脚本后,会为9和40新生成两个div。如图

当然,如果将上述代码中的enter()方法替换为exit(), 那么9和40将被丢弃,不会生成新的div。

参考:d3.js in action

时间: 2024-11-05 20:37:07

D3.js中对array的使用的相关文章

[2] D3.js中如何使用数据和选择元素

对D3.js或数据可视化有兴趣的朋友欢迎到 www.ourd3js.com 讨论. 接着上一讲的内容,这次讨论如何选择元素和使用数据. 现在页面中有三行文字,代码为: <p>Hello World 1</p> <p>Hello World 2</p> <p>Hello World 3</p> 定义一个集合set,里面有三个元素: var set = ["I like dog","I like cat&qu

[6] D3.js中如何让图表动起来

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. [5.1]节中制作了一个比较完善的图表,但它是静态的,想做出它的动态效果吗?在D3中只需要短短的几行代码即可. 这一节将涉及4个函数的使用. 1.transition() 启动转变效果只需要添加这个即可.把它加到两种状态之间,例如: .attr("fill","red") .transition() .attr("fill

[4] D3.js中使用scale(比例)

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 在上一节中使用了一个很重要的概念 - scale (这个不知道翻译成什么,暂且叫它比例).本节将重点介绍它的相关使用方法. 在介绍 scale 之前,先介绍两个经常和 scale 一起出现的函数,在上一节中也出现了. d3.max() d3.min() 它们用于求一个数组中的最大值和最小值,如果是一维数组,使用方法如下: var dataset = [ 30,

[5.1] D3.js中整合坐标轴 - 图表 - 文字标签

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 前面几节讲解了图标.坐标轴.比例等等,这一节整合这些内容做一个实用的图表.结果图如下: 代码如下所示: <html> <head> <meta charset="utf-8"> <title>Chart</title> </head> <style> .axis pat

JS数组去重,js中数组(Array)的排序(sort)

JS数组去重 var ddd = [1,2,4,5,2, 222,1,5,6]; var uq = {}; var rq = []; for(var i=0; i<9; i++){ if(!uq[ddd[i]]){ uq[ddd[i]] = true; rq.push(ddd[i]); } } return rq; js中数组(Array)的排序(sort)注意事项 var arrDemo = new Array(); arrDemo[0] = 10; arrDemo[1] = 50; arrD

[2.1] D3.js中关于如何选择,插入,删除元素

对D3.js或数据可视化有兴趣的朋友欢迎到 www.ourd3js.com 讨论,本人博客首页为: http://blog.csdn.net/lzhlzz ,转载请注明出处,谢谢. 在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同时操作) 来看一个具体的例子,现有如下代码: <html> <head> <meta charse

[5] D3.js中如何添加坐标轴

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢.      第3节中做了一个图标,但没有为它添加一个相应的坐标轴,这样不知道每一个柱形到底有多长.这一节做一个坐标轴. D3中的坐标轴都是以 svg 图的形式出现的,这也是为什么在第3节中要使用 svg 的方法做柱形图的原因.第4节里我们讲解了 scale (比例)的用法,在做坐标轴的时候也需要用到比例.第4节中,我们说到scale 是一个函数,这一节中的坐标轴也

js中数组Array的一些常用方法总结

var list = new Array()是我们在js中常常写到的代码,今天就总结一下Array的对象具有哪些方法. list[0] = 0; list[1] = 1; list[2] = 2; 或者这样声明:var list = [0,1,2]; (1) shift():  alert(list.shift()); //删除数组的第一个元素,返回删除的值.这里是0  alert(list.length); //返回的数组长度是2 (2) unshift( i , j ): list.unsh

d3.js中data(), enter() 和 exit()的作用

我在刚接触使用d3.js的时候,最感到困惑的一个地方是data(), enter(), exit()这几个操作. 在我接触一段时间,有了一些了解之后,简单说说我的理解. data() 先看一个例子: <body> <p></p> <p></p> <p></p> </body> 执行代码: d3.select("body").selectAll("p").data([1,