操作数组
 
D3提供了将数组洗牌、合并等操作,使用起来是很方便的。
 
d3.shuffle(array,[,lo[,ji]]) :     //随机排列数组。
d3.merge(arrays) :         //合并两个数组。
d3.pairs(array) :             //返回邻接的数组对。
d3.range([start,]stop[,step]) :    //返回等差数列。
d3.permute(array,indexes) :     //根据指定的索引号数组返回排列后的数组。
d3.zip(arrays...) :           //用多个数组来制作数组的数组。
d3.transpose(matrix) :        //求转置矩阵。
 
"shuffle"有"洗牌的意思,将数组作为参数使用后,能将数组随机排列。举个例子 :
 var numbers = [10,13,15,17,19,21];
         d3.shuffle(numbers)
         //打印一下新数组
         console.log(numbers)    //重新随机排列的数组:[19, 17, 10, 15, 21, 13];

d3.merge(arrays) :  合并两个数组:

 d3.merge(arrays)    : //合并两个数组。将两个数组合并时使用
         var numbers1 = [1,2];
         var numbers2 = [3,4];
         var numbers3 = d3.merge([numbers1,numbers2]);
         //打印一下numbers3
         console.log(numbers3)   //返回[1, 2, 3, 4]
 
 d3.pairs(array) : 返回邻接的数组对。
使用pairs()后,原数组不变。以第i项和第i-1项为对返回,举个例子 :
 var colors = ["red","blue","yellow"];
         //colors不变,结果保存在pairs中
         var pairs = d3.pairs(colors);
         // 打印一下parirs
         console.log(pairs)  //返回["red", "blue"]  ["blue", "yellow"]   
 
d3.range([start,]stop[,step]) : 返回等差数列。参数有三个 : start、stop、step。返回的等差数列为 :[start,start+step,start+2*step,......]
如果stop为正,则最后的值小于stop。如果stop为负,则最后的值大于stop。start和step如果省略,则默认值分别为0和1。举个例子 :
 var a = d3.range(0,10,1)
         var b = d3.range(2,10,1)
         var c = d3.range(2,10,2)
         //打印一下结果
         console.log(a)  //返回的数据为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
         console.log(b)  //返回的数据为[2, 3, 4, 5, 6, 7, 8, 9]
         console.log(c)  //返回的数据为[2, 4, 6, 8]
要注意 : 省略参数的使用方法,根据参数个数的不同,结果是不同的。range()在生成数组时经常使用。
 
 
d3.permute(array,indexes) : 根据指定的索引号数组返回排列后的数组。此函数可以用某个由索引号组成的数组,返回根据索引号排列后的新数组,原数组不变。举个例子 :
 
   var animals = ["cat","dog","bird"];
         //根据[2,1,0]将数组animals重新排列,但是原数组animals不变,结果保存在返回值中
         var newAnimals = d3.permute(animals,[2,1,0])
         //打印一下新数组
         console.log(newAnimals) //返回的新数组 ["bird", "dog", "cat"]
要注意:数组索引号是从0开始的,如果有超出范围的索引号,该位置会以undefined代替。
 
 
 
d3.zip(arrays...) : 用多个数组来制作数组的数组。参数是任意多个数组,输出是数组的数组。举个例子 :
 var zip = d3.zip([1000, 1001, 1002],
                         ["zhangsan", "lisi", "wangwu"],
                         ["true", "false", "NaN"])
         //打印一下结果
         console.log(zip)    //结果为 : [
                                 [1000, "zhangsan", "true"],
                                 [1001, "lisi", "false"],
                                 [1002, "wangwu", "NaN"]
                             ]
可以看到,参数中每个数组的第i项变成了新数组的第i项。zip()可以被用来求向量的内积。再举个例子 :

  var a = [10,20,5];
         var b = [-5,10,3];
         var ab = d3.sum(d3.zip(a,b),function(d){
             return d[0]*d[1]
         })

         console.log(ab) //返回的值为165
         //上面代码中,使用d3.zip(a,b)得到的结果为
         console.log(d3.zip(a,b))    //[ [10, -5],[20, 10],[5, 3] ]
         //然后,这个数组会被function(d)先处理,处理的结果为:[-50,200,15]
         //最后再被d3.sum()求和,结果即向量a和b的内积。

d3.transpose(matrix) : 求转置矩阵。
将矩阵的行换成相应的列,得到的矩阵即转置矩阵。举个例子:
 

 var a =[[1,2,3],[4,5,6]];
         //转置后,原数组不变,结果保存在返回值中
         var t = d3.transpose(a)
         //输出结果
         console.log(t)      //结果为 : [[1,4],[2,5],[3,6]]
 
 

D3.js的基础部分之数组的处理 数组的排序和求值(v3版本)的更多相关文章

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

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

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

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

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

    选择集的处理 : 过滤器 有时候需要根据绑定数据对某选择集的元素进行过滤,例如某公司,只对id大于100的员工进行奖励.某学校只选拔身高超过170cm的学生等.类似这样的问题,需要根据条件获取选择集的 ...

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

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

  5. 【BigData】Java基础_定义工具类,对ArrayList排序并且求最大值、最小值、平均值

    需求描述 编写一个工具类,对ArrayList实现以下功能: ① 排序 ② 求最大值 ③ 求最小值 ④ 求平均值 需求实现 实现代码 package cn.test.logan.day04; impo ...

  6. 贰、js的基础(一)

    1.js的语法 a.区分大小写 b.弱类型变量:变量无特定类型 c.每行结尾的分号可有可无 d.括号用于代码块 e.注释的方法与c语言和java相同 2.变量 注意事项: a.通过关键字var来声明. ...

  7. D3.js(v3)+react框架 基础部分之数据绑定及其工作过程与绑定顺序

    数据绑定: 将数据绑定到Dom上,是D3最大的特色.d3.select和d3.selectAll返回的元素的选择集.选择集上是没有数据的. 数据绑定就是使被选择元素里“含有”数据. 相关函数有两个: ...

  8. D3.js学习笔记(六)——SVG基础图形和D3.js

    目标 在这一章,我们将会重温SVG图形,学习如何使用D3.js来创建这些图形. 这里会包括前面例子中的SVG基础图形以及如何使用D3.js设置图形的属性. 使用D3.js画一个SVG 的 圆 circ ...

  9. 精通D3.js学习笔记(1)基础的函数

    买了本吕大师的d3可视化.最近来学习一下,做个笔记.   1.选择元素  select(第一元素) 和selectAll(全部的元素)      类似css的选择器.也可以是dom选中的. var i ...

随机推荐

  1. C++中string的使用

    概述 这篇博文为了记录C++中string的使用,用到一点补充一点. 预备 使用string之前需要包含头文件 #include<iostream> #include<string& ...

  2. ACM-ICPC 2018 徐州赛区网络预赛 A Hard to prepare

    https://nanti.jisuanke.com/t/31453 题目大意: 有n个人坐成一圈,然后有\(2^k\)种颜色可以分发给每个人,每个人可以收到相同的颜色,但是相邻两个人的颜色标号同或不 ...

  3. Linux基础笔记

    基本命令: man man  查看手册 (1)pwd  显示路径 (2)cd  切换路径 (3)ls -a;-l;-h;-i;-d (隐藏的:长列表显示:human显示:索引号:只显示列表) (4)c ...

  4. shell常见命令

    awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk ''  | output 1.首先要知道形式 awk 'command' fi ...

  5. nginx负载均衡总结

    在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中w ...

  6. js中的事件代理(委托)

    1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这 ...

  7. linux systemctl 常用用法简介

    主要介绍systemctl的几个功能如下: 1.查看某个服务的状态 2.关闭某个服务 3.开启某个服务 4.设置某个为开机自启动 5.关闭某个服务为开机不启动 6.查看所有开启启动的服务 1.查看某个 ...

  8. noip第1课资料

  9. 基于MATLAB的腐蚀膨胀算法实现

    本篇文章要分享的是基于MATLAB的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,腐蚀在二值图像的基础上做“收缩”或“细化”操作,膨胀在二值图像的基础上做“加长”或“变粗”的操作. 什么是二值图像 ...

  10. hdu 5083 有坑+字符串模拟水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5083 机器码和操作互相转化 注意SET还要判断末5位不为0输出Error #pragma comment(lin ...