JavaScript统计数据处理(1) - 数组
在浏览器中运用JavaScript技术处理统计数据具有最佳的推广传播效果
数组是相同数据类型的数据按一定顺序排列的集合,组成数组的数据称为数组的元素。即数组是在程序设计中,为了处理方便,把具有相同类型的数据按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。
在程序执行过程中,数组具有运行速度快、占用内存少、处理方便等优势。几乎所有编程语言中都有数组这一数据类型和相关原生函数。JavaScript(简称JS)也不例外,随着版本的不断更新发展,JS数组功能也在不断提升。统计学中不同类型统计数据(截面数据、时间序列和面板数据)都可以通过JS数组来处理。熟练掌握JS数组技术是进入统计数据编程领域的基础。
1、数组定义的方式
[返回]var aArr = new Array(); var bArr = new Array(10); var cArr = new Array("first", "second", "third");
var valArr = [23, 45, 41, 87]; var strArr = ["first", "second", "third"];
掌握JS数组对于网上统计数据处理致关重要。在银河网络统计学平台中,一般使用JS数组直接量方式表达和处理统计数据。
2、按静态方式创建数组
[返回]var arr1 = [23,45,67,12,33]; //一维数组 var arr2 = [[23,45,67],[21,12,33],[41,15,36]]; //二维数组(3行x3列) var arr3 = [[23,45],[21,12,33,12],[41,15,36]]; //二维数组(不规则) var arr4 = [[23,45],123,[41,[15,36]]]; //混合数组
3、按动态方式创建数组
[返回]var arr = []; //空数组 arr[0] = 10; //第1个元素为10 arr[1] = 12; arr[2]=[] //第3个元素为空数组 arr[2][0]=15; //第3个数组元素的第1个元素为15 arr[2][1]=20; //第3个数组元素的第1个元素为15
注:数组是一组有序的数据集合,其索引从0开始
4、数组元素的引用和修改
[返回]console.clear(); //清空输出工作台 var arr = [23,45,67,12,33]; var oVal = arr[1]; //引用:将数组第2个元素45赋值给变量oValue arr[4] = 50; //修改:将数组第5个元素33改为50 var arrs = [[23,45],123,[41,[15,36]]]; arrs[0][1] //45 arrs[1] //123 var val = arrs[2][1][0] //15 console.log(val); //输出指定变量 arrs[0][1] = 99; arrs[1] = 100; arrs[2][1][0] = 50;
5、添加和删除元素
[返回]console.clear(); var arr = [23,45,67,12,33]; arr.push(100,200); //添加数据到结尾 arr.unshift(200,100); //添加数据到开始 console.log(arr); arr.pop(); //删除原数组最后一项 arr.shift(); //删除原数组第一项 console.log(arr); arr = [23,45,67,12,33]; arr.splice(3,0,100,200) //插入100和200到67后面 console.log(arr); arr = [23,45,67,12,33]; arr.splice(2,1,100,200) //将100和200插入45之后并删除67 console.log(arr);
注:splice函数对数组插入并删除元素。arr.splice(index,howmany,item1,item2,...)中,index:指定新元素插入(或删除)的位置;howmany:要删除的项目数量(howmany为 0,则为插入);item1,item2,...:要插入(或删除)的新元素项
6、数组的截取、拷贝和合并
[返回]console.clear(); var arr; var arr1 = [2,4,7,1,3]; var arr2 = [3,5,6,2,7]; var arr3 = [4,5,1,7,9]; arr = arr1.slice(1,4); //以数组的形式返回数组第1-3个元素,注意不包括第4个元素; //如果省略第2个参数4,将复制第1个参数1之后的所有元素 arr = arr1.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向 arr = arr1.concat(arr2,arr3); //将多个数组连接为一个数组,返回连接好的新的数组 arr = arr1.concat(arr2,100,200); arr = arr1.concat(100,200,arr2,200,100); arr = arr1.concat("myArray",arr2); console.log(arr);
7、一维数组排序
[返回]console.clear(); var arr,arr1,arr2,arr3,arr4; arr = [2,4,7,1,3]; arr1 = arr.slice(0); arr2 = arr.slice(0); arr3 = arr1.sort(); //对数组元素排序(升序) arr4 = arr2.reverse(); //反转元素(最前的排到最后、最后的排到最前) console.log(arr3.reverse()); //输出arr3的倒序 var arr5=["George","John","Thomas","James","Adrew","Martin"]; arr5.sort(); //直接按英文字母顺序排序 console.log(arr5); //两个比较的元素分别为a, b var arr = [12,21,24,32,45,32,12,32,43]; //升序 arr.sort((a, b) => { return a - b }) console.log(arr) //降序 arr.sort((a, b) => { return b - a }) console.log(arr) //乱序 arr.sort((a, b) => { return Math.random()*2 - 1; }) console.log(arr)
注:arrNew = arrOld.sort()这行代码运行后,数组arrOld同时被排序,原数组的结构被打乱。为了保留原数组,可先用这行代码arrCopy = arrOld.slice(0)将数组arrOld备份到数组arrCopy中保留。arrNew = arrOld.reverse()同理。
8、数组常用方法总结
[返回]console.clear(); var arr, str; var arr1 = [2,4,7,1,3]; var arr2 = [2,9,6]; var arr3 = [3,6,5,3]; arr = arr1.concat(arr2,arr3); //连接两个或更多的数组,返回新数组 arr = arr1.slice(1,4); //按指定起始下标返回数组片段 str = arr1.toString(); //把数组转换为字符串 str = arr1.join(":"); //返回指定分隔符的字符串 arr1.pop(); //删除数组最后一个元素 arr1.push(9,9,9); //向数组的末尾添加一个或更多元素 arr1.reverse(); //颠倒数组中元素的顺序 arr1.sort(); //对数组的元素进行正序排序 arr1.shift(); //删除第一个元素并返回数组 arr1.unshift(8,8,8); //向数组的开头添加一个或更多元素 arr1.splice(1,2,7,7); //删除元素,并向数组添加新元素 console.log(arr);
最后需要强调一下,JS数组的属性不多,最常用的设length属性,即返回数组元素总数。样例代码如下:
console.clear(); var arr, str; var arr1 = [2,4,7,1,3]; var arr2 = [2,9,6]; console.log(arr1.length); //5 console.log(arr2.length); //3
本文只介绍了JS数组的基本用法,当我们循序学完函数、对象等知识后,“数组进阶”还将进一步介绍JS数组的其它强大功能,从而满足承载和处理统计数据的要求。
提示:本页中JS脚本代码可复制粘贴到JS代码运行窗口调试体验; 文本编辑快捷键:Ctrl+A - 全选;Ctrl+C - 复制; Ctrl+X - 剪切;Ctrl+V - 粘贴
©哈尔滨商业大学 银河统计工作室
银河统计工作室成员由在校统计、计算机部分师生和企业数据数据分析师组成,维护和开发银河统计网和银河统计博客(技术文档)。专注于数据挖掘技术研究和运用,探索统计学、应用数学和IT技术有机结合,尝试大数据条件下新型统计学教学模式。