选择集的处理 : 过滤器
有时候需要根据绑定数据对某选择集的元素进行过滤,例如某公司,只对id大于100的员工进行奖励。某学校只选拔身高超过170cm的学生等。类似这样的问题,需要根据条件获取选择集的一部分子集,该方法成为过滤器。
 render() {
         return (
             <div id="body" >

             </div>
         );
     }
 // 定义数组,然后过滤到小于20的数,只选取大于20的数
         var dataList = [10, 20, 30, 40, 50, 60]
             .filter(function (d, i) {
                 if (d > 20) {
                     return true
                 } else {
                     return false
                 }
             })
         //选择id为body的容器赋值给变量body
         var body = d3.select("#body")

         body.selectAll("p")
             .data(dataList)
             .enter()
             .append("p")
             .text(function (d) {
                 return d
             })
当所绑定的数据的数值大于20时,返回true,否则返回false。即只有大于20的数值才能存在,其他的被过滤掉。显示的效果为 :
 
选择集的处理 : 选择集的顺序
sort()可以根据被绑定数据重新排列选择集中的元素。sort()的参数是一个无名函数,该函数也称作比较器。比较器的规则与JavaScript的Array.sort()一样。
 var dataList = [88,77,11,44,55,22,66,33,99,88,11,66]

         dataList.sort(function(a,b){
             return a-b
         })

         console.log(dataList)  // [11, 11, 22, 33, 44, 55, 66, 66, 77, 88, 88, 99]

         dataList.sort(function(a,b){
             return b-a
         })

         console.log(dataList)  //[99, 88, 88, 77, 66, 66, 55, 44, 33, 22, 11, 11]
 function(a,b){
     if(a<b){
         return -1;
     }else if(a> b){
         return 1
     }else{
         return 0
     }
 }
此比较函数有两个参数,当a应该位于b之前时则返回一个负数。当a位于b之后时,则返回一个正数。如果a和b相等,则返回0。根据以上规则,我们对选择集重新排序
 
选择集的处理 : each()的应用
each()允许对选择集的各元素分别处理。
 var dataList = [
             {id : 0,name:"zhangsan"},
             {id : 1,name:"lisi"},
         ]

         var body = d3.select("#body")

         body.selectAll("p")
             .data(dataList)
             .enter()
             .append("p")
             .each(function(d){
                return  d.age =18
             })
             .text(function(d,i){
                 return d.id + " " +d.name + " " +d.age
             })

上面代码中,被绑定的数据里没有age属性,然后我们通过each()函数为每一项添加了age属性,最后在text()中使用了此新属性。
 
选择集的处理 : call()的应用
call()允许将选择集自身作为参数,传递给某一函数。如
 d3.selectAll("div").call(myfun)
这段代码将选择集作为参数传递给myfun函数使用。等同于一下代码 :
 function myfun(seleciton){
     //在这里进行相关操作
     seleciton.attr("name","value");
 }
 myfun(d3.selectAll("div"))
在以后我们做图表的时候,可能会做拖拽,缩放等操作。那时候就会经常用到call()了。这里先简单了解一下即可。
 
 

D3.js的基础部分之选择集的处理 过滤器、选择集的顺序、each()和call()的应用(v3版本)的更多相关文章

  1. D3.js的基础部分之选择集的处理 enter和exit的处理方法 (v3版本)

    上一节给大家讲述额绑定数据的原理.当数组的长度与元素的数量不一致时,有enter部分和exit部分,前者表示存在多余的数据,后者表示存在多余的元素.本节将给大家介绍如何处理这些多余的东西,最后会给大家 ...

  2. D3.js的基础部分之数组的处理 数组的排序和求值(v3版本)

    操作数组   D3提供了将数组洗牌.合并等操作,使用起来是很方便的.   d3.shuffle(array,[,lo[,ji]]) : //随机排列数组. d3.merge(arrays) :   / ...

  3. D3.js的基础部分之数组的处理 映射(v3版本)

    映射(Map)   映射(Map)是十分常见的一种数据结构,由一系列键(key)和值(value)组成的.每个key对应一个value,根据key可以获取和设定value,也可以根据key来查询val ...

  4. D3.js的基础部分之数组的处理 集合(Set)(v3版本)

    数组的处理 之 集合(set) 集合(Set)是数学中常用的概念,表示具有某种特定性质的事物的总体.集合里的项叫做元素.集合的相关方法有:   d3.set([array]) //使用数组来构建集合, ...

  5. D3.js的v5版本入门教程(第五章)—— 选择、插入、删除元素

    D3.js的v5版本入门教程(第五章) 1.选择元素 现在我们已经知道,d3.js中选择元素的函数有select()和selectAll(),下面来详细讲解一下 假设我们的<body>中有 ...

  6. 【 D3.js 选择集与数据详解 — 1 】 使用datum()绑定数据

    选择集和数据的关系是 D3 最重要的基础,在[入门 - 第 7 章]时进行过些许讲解,对于要掌握好 D3 是远远不够的.故此开设一个新的分类,专门讨论选择集与数据的关系,包括数据绑定的使用和工作原理, ...

  7. 【 D3.js 选择集与数据详解 — 5 】 处理模板的应用

    在[选择集与数据 - 4]一文中,介绍了一个update.enter.exit的处理模板,这个模板很常用,本文将通过一个例子来讲解其使用方法. 1. 模板 复习一下上一章提到的模板. //绑定数据后, ...

  8. 【 D3.js 选择集与数据详解 — 4 】 enter和exit的处理方法以及处理模板

    绑定数据之后,选择集分为三部分:update.enter.exit.这三部分的处理办法是什么呢?本文将讲解其处理方法,以及一个常用的处理模板. 1. enter的处理方法 如果没有足够的元素,那么处理 ...

  9. 【 D3.js 选择集与数据详解 — 3 】 绑定数据的顺序

    data() 函数有两个参数,第一个是被绑定数据,第二个参数用于指定绑定的顺序.在数据需要更新的时候常常会用到. 默认的情况下,data()函数是按照索引号依次绑定数组各项的.第0个元素绑定数组的第0 ...

随机推荐

  1. 前端之前端介绍或html的常用标签1

    一 web服务器的本质 由浏览器发送一个请求.服务器接收到,然后在回应一个响应. 由于浏览器的不同,web服务器响应的内容不一定被浏览器接收. HTTP/1.1 201 OK\r\n\r\n需要发送的 ...

  2. 10个相见恨晚的 Java 在线练手项目

    10个有意思的Java练手项目: 1.Java 开发简单的计算器 难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习 2.制作一个自己的 Java 编辑器 难度中等,适合 Ja ...

  3. Mysql导入excel数据,解决某些特殊字符乱码问题

    问题 做项目需要从excel表格导入到mysql的数据库表中,excel表格中的“规格”字段的“×”符号导入数据库表中,会出现部分数据的“×”这个符号会乱码,成“?”的形式. 解决方法 打开excel ...

  4. windows下mongodb安装与使用图文教程(整理)

    一.首先安装mongodb 1.下载地址:http://www.mongodb.org/downloads 2.解压缩到自己想要安装的目录,比如d:\mongodb 3.创建文件夹d:\mongodb ...

  5. springboot深入学习(三)-----docker

    一.spring data思路 spring data使用统一的api来对各种数据库存储技术进行数据访问操作提供了支持,包括oracle.mysql.redis.mongoDB等等.主要是通过spri ...

  6. 负载均衡下 tomcat session 共享

    概述 在分布式部署的情况下,每台tomcat 都会有自己的session ,这样如果 用户A 在tomcat1 下登录,在tomcat2 下并没有session信息.如果 tomcat1宕机,tomc ...

  7. 实战fortran77基础语法

    1.数组在主函数和子例行函数中传递 一个项目中有两个源代码文件: 代码: PROGRAM ARRAYZBL DOUBLE PRECISION A,B,C,D(:) INTEGER I DATA A,B ...

  8. java学习路线图(2018年最新版)

    最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从 ...

  9. highChart图表

    Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...

  10. sql计算经纬度得出最近距离的公式

    sql计算经纬度得出最近距离的公式 //根据经纬度计算两点距离 mappoint //数据库已有字段,商家经纬度 实例:113.272148,23.147299 $lon = "" ...