JavaScript脚本语言基础(三)
导读:
数学对象(Math)
数组对象(Array)
字符串对象(String)
日期对象(Date)
js对象是属性和方法的集合。JavaScript中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
- 对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;
- 对象的方法:能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;
JavaScript提供多个内建对象,比如 String、Date、Array 等等,
1、数学对象(Math) [返回]
JavaScript数学对象的作用是执行常见的算数任务,数学对象对象提供多种算数值类型和函数。
函数 | 备注 |
---|---|
PI | 圆周率pai的值 |
E | 返回欧拉常数e的值 |
LN10 | 10的自然对数的值 |
LN2 | 2的自然对数的值 |
LOG2E | 基数为2的e的对数的值 |
LOG10E | 基数为10的e的对数的值 |
log(value) | 基数为e的value的对数的值,是exp(value)的反方法 |
SQRT1_2 | 返回0.5的平方根 |
SQRT2 | 返回2的平方根 |
sqrt(number) | 计算number平方根 |
pow(m,n) | 计算m的n次方 |
cos(number) | 计算余弦值 |
acos(number) | 计算反余弦值 |
sin(number) | 计算正弦值 |
asin(number) | 计算反正弦值 |
tan(number) | 计算正切值 |
atan(number) | 计算反正切值 |
atan2(x,y) | 根据指定的坐标返回一个弧度值 |
ceil(number) | 返回大于或等于number的整数 |
floor(number) | 返回小于或等于number的整数 |
round(number) | 取整(四舍五入) |
exp(value) | 计算以e为基数的value次方的值 |
abs(number) | 计算number的绝对值 |
max(num1,num2,…) | 返回两个或多个参数中的最大值 |
min(num1,num2,…) | 返回两个或多个参数中的最小值 |
random() | 生成0到1的随机数[0,1).生成n到m之间的随机数n+(m-n)*Math.random() |
数学对象用法如下:
JavaScript语法练习 参见本站提供的银河统计JavaScript脚本测试工具和W3School JavaScript在线教程。
2、数组对象(Array) [返回]
数组简而言之就是一组有序的数据集合,其索引为从0开始且自然增长的整数,其元素值可以是任何JS数据。并且包含一个名为length的属性,该属性表示数组元素的个数。
(1) 数组定义的方式
I、使用构造函数:
var a = new Array();
var b = new Array(10);
var c = new Array("first", "second", "third");
II、数组直接量:
var d = ["first", "second", "third"];
数组在任何计算机软件中担任大数据处理的任务,具有占内存少、运算速度快的特点。掌握JS数组对于网上统计数据处理致关重要。在银河网络统计学平台中,一般使用JS数组直接量方式表达和处理统计数据。
(2) 数组的创建
var arr1 = ["first", "second", "third"]; //一维字符数组
var arr2 = [23,45,67,12,33]; //一维数值数组
var arr3 = [[23,45,67],[21,12,33],[41,15,36]]; //二维数值数组(3x3)
(3) 数组的元素的引用和修改
var oValue = arr1[1]; //引用:将数组arr1第2个元素second赋值给变量oValue
arr2[0] = 20; //修改:将数组arr2第1个元素23改为20
注:数组是一组有序的数据集合,其索引从0开始。
(4) 数组元素的引用和修改
var oValue = arr1[1]; //引用:将数组arr1第2个元素second赋值给变量oValue
arr2[0] = 20; //修改:将数组arr2第1个元素23改为20
(5) 数组添加和删除
var arr = [23,45,67,12,33];
arr.push(100,200) //将一个或多个新元素添加到数组结尾
arr = [23,45,67,12,33];
arr.unshift(100,200) //将一个或多个新元素添加到数组开始,数组中的元素自动后移
arr = [23,45,67,12,33];
arr.splice(2,0,100,200) //将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移
arr = [23,45,67,12,33];
arr.splice(2,1,100,200) //将二个新元素插入到数组的指定位置2,并从指定位置开始删除一个元素
注:arr.splice(index,howmany,item1,item2,...)中,index:指定新元素插入的位置;howmany:要删除的项目数量。如果设置为 0,则不会删除项目;item1,item2,...:要插入的新元素项。
(6) 数组的截取、拷贝和合并
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);
注:arr1.slice(start,end)中,index:指定新元素插入的位置;howmany:要删除的项目数量。如果设置为 0,则不会删除项目;item1,item2,...:要插入的新元素项。
(7) 数组元素基本排序
var arr,arr1,arr2,arr3,arr4;
arr = [2,4,7,1,3];
arr1 = arr.slice(0); //拷贝arr赋值给变量arr1
arr2 = arr.slice(0);
arr3 = arr1.sort(); //对数组元素排序(升序)
arr4 = arr2.reverse(); //反转元素(最前的排到最后、最后的排到最前)
var arr5=["George","John","Thomas","James","Adrew","Martin"];
arr5.sort(); //直接按英文字母顺序排序
注:arrNew = arrOld.sort()这行代码运行后,数组arrOld同时被排序,原数组的结构被打乱。为了保留原数组,可先用这行代码arrCopy = arrOld.slice(0)将数组arrOld备份到数组arrCopy中保留。arrNew = arrOld.reverse()同理。
(8) 数组元素自定义排序
var arr1 = [2,4,7,1,3];
var arr2 = [5,6,9,8,3];
arr1.sort(function(a,b){return a-b});//从小到大排序
arr2.sort(function(a,b){return b-a});//从大到小排序
(9) 简单对象List自定义属性排序
var objList = []; //定义空数组
function Persion(name,age){ //数据结构对象构造
this.name=name;
this.age=age;
}
objList.push(new Persion('jack',20)); //向数组添加具体对象
objList.push(new Persion('tony',25));
objList.push(new Persion('stone',26));
objList.push(new Persion('mandy',23));
objList.sort(function(a,b){return a.age-b.age}); ////按年龄从小到大排序
(10) 对象数组任意单键值排序
var by = function(name){ //构造按任意属性排序函数
return function(o,p){
var a, b;
if (typeof o === "object" && typeof p === "object" && o && p) {
a = o[name];
b = p[name];
if (a === b) {return 0;}
if (typeof a === typeof b) {return a < b ? -1 : 1;}
return typeof a < typeof b ? -1 : 1;
} else {
throw ("error");
}
}
}
var employees=[];
employees[0]={name:"George", age:32, retiredate:"March 12,2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
employees.sort(by("age")); //运用构造函数按age排序
employees.sort(by("retiredate")); //运用构造函数按retiredate排序
employees.sort(by("name")); //运用构造函数按name排序
(11) 对象数组任意双键值排序
var by = function(name,minor){
return function(o,p){
var a,b;
if(o && p && typeof o === 'object' && typeof p ==='object'){
a = o[name];
b = p[name];
if(a === b){return typeof minor === 'function' ? minor(o,p):0;}
if(typeof a === typeof b){return a < b ? -1:1;}
return typeof a < typeof b ? -1 : 1;
}else{
thro("error");
}
}
}
employees.sort(by('age',by('name')));
(12) 二维数组排序
var arr = [[4,2,3],[7,2,6],[3,2,3]]; //定义二维数组
arr.sort(function(x,y) { //按子数组的第一列排序
return x[0]-y[0];
});
(13) 数组元素的字符串化
arr = [1,2,3,4,5];
arr.join(":"); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 ":"号隔开。
(14) 数组对象的3个属性
length 属性
Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:
var arr=[12,23,5,3,25,98,76,54,56,76];//定义了一个包含10个数字的数组
alert(arr.length); //显示数组的长度10
arr.length=12; //增大数组的长度
alert(arr.length); //显示数组的长度已经变为12
alert(arr[8]); //显示第9个元素的值,为56
arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃
alert(arr[8]); //显示第9个元素已经变为"undefined"
arr.length=10; //将数组长度恢复为10
alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
prototype属性
返回对象类型原型的引用。prototype 属性是 object 共有的。 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。对于数组对象,以以下例子说明prototype 属性的用途。给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。
function array_max( ) {
var i, max = this[0];
for (i = 1; i < this.length; i++) {
if (max < this[i]) {max = this[i];}
}
return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );
alert(y);
constructor 属性
表示创建对象的函数。constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。
x = new String("Hi");
if (x.constructor == String) // 进行处理(条件为真)。
//或
function MyFunc {// 函数体。}
y = new MyFunc;
if (y.constructor == MyFunc) // 进行处理(条件为真)
JavaScript数组用法如下:
JavaScript语法练习参见本站提供的银河统计JavaScript脚本测试工具和W3School JavaScript在线教程。
3、字符串对象(String) [返回]
JavaScript的String对象用于处理文本(字符串)。在你处理数据的时候,字符串在JavaScript中、在统计数据中几乎无处不在。JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等。
(1)字符串的创建
创建一个字符串有两种方法。
最简单的是用引号将一组字符包含起来,可将其赋值给一个字符串变量。如,var myStr = "Hello, String!";这时变量myStr类型为string。
要创建一个字符串对象,可使用如下语句:var strObj = new String("Hello, String!");这时变量strObj类型为object。
(2)charAt()方法
语法:stringObject.charAt(index),表示字符串中某个位置的数字,即字符在字符串中的下标。
注释:参数index必需。字符串中第一个字符的下标是0。如果参数index不在0与string.length 之间,该方法将返回一个空字符串。
实例:
var myStr = "I am a student.";
var myLetter = myStr.charAt(3); //myLetter为字母a
document.write("<br/>第4个字母为:"+myStr.charAt(3)); //myLetter为字母m
(3)charCodeAt()方法
语法:stringObject.charCodeAt(index)方法返回指定位置的字符的Unicode编码。
注释:参数index必需,返回值是0-65535之间的整数。charCodeAt()方法与charAt()方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。
实例:
var str="Hello world!"
document.write(str.charCodeAt(1)) //输出为101
(4)fromCharCode()方法
语法:stringObject.charCodeAt(index)方法接受一个指定的Unicode值,然后返回一个字符串。
注释:参数index必需,是0-65535之间的整数,返回值为字符串。
实例:
document.write(String.fromCharCode(72,69,76,76,79)); //输出为HELLO
document.write(String.fromCharCode(65,66,67)); //输出为ABC
(5)concat() 方法
语法:stringObject.concat(stringX,stringX,...,stringX)方法用于连接两个或多个字符串。
注释:stringX 必需。将被连接为一个字符串的一个或多个字符串对象。提示:请注意,使用"+" 运算符来进行字符串的连接运算通常会更简便一些。
实例:
var str1="Hello "
var str2="world!"
document.write(str1.concat(str2)) //输出为Hello world!
(6)indexOf()方法
语法:stringObject.indexOf(searchvalue,fromindex)方法可返回某个指定的字符串值在字符串中首次出现的位置。
注释:searchvalue 必需。规定需检索的字符串值;fromindex可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是0到stringObject.length-1。如省略该参数,则将从字符串的首字符开始检索。该方法将从头到尾地检索字符串stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的fromindex处或字符串的开头(没有指定fromindex 时)。如果找到一个searchvalue,则返回searchvalue的第一次出现的位置。stringObject中的字符位置是从0开始的。
实例:
var str="Hello world!"
document.write(str.indexOf("w",1) + "<br/>"); //返回6
document.write(str.indexOf("w",2) + "<br/>"); //返回6
document.write(str.indexOf("w",5) + "<br/>"); //返回6
document.write(str.indexOf("w",7)); //返回-1
(7)lastIndexOf()方法
语法:stringObject.lastIndexOf(searchvalue,fromindex)方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
注释:searchvalue必需。规定需检索的字符串值。fromindex可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是0到stringObject.length-1。如省略该参数,则将从字符串的最后一个字符处开始检索。如果要检索的字符串值没有出现,则该方法返回-1。
实例:
var str="Hello world!"
document.write(str.lastIndexOf("w",4) + "<br/>"); //返回-1
document.write(str.lastIndexOf("w",7) + "<br/>"); //返回6
document.write(str.lastIndexOf("w",8) + "<br/>"); //返回6
document.write(str.lastIndexOf("w",9)); //返回6
(8)slice()方法
语法:stringObject.slice(start,end)方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注释:start要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1指字符串的最后一个字符,-2指倒数第二个字符,以此类推;end紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括start到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。返回值是一个新的字符串。包括字符串stringObject从start开始(包括start)到end结束(不包括end)为止的所有字符。
实例:
var str="Hello happy world!";
document.write(str.slice(6)); //输出:happy world!
var str="Hello happy world!";
document.write(str.slice(6,11)); //输出:happy
(9)split()方法
语法:stringObject.split(separator,howmany)方法用于把一个字符串分割成字符串数组。
注释:separator必需。字符串或正则表达式,从该参数指定的地方分割stringObject。howmany可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。如果把空字符串(""),不是空格,用作separator,那么stringObject中的每个字符之间都会被分割
实例:
var str="How are you doing today?"
document.write(str.split(" ") + "<br/>"); //输出How,are,you,doing,today?
document.write(str.split("") + "<br/>");
//输出H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
document.write(str.split(" ",3)); //输出How,are,you
(10)substr()方法
语法:stringObject.substr(start,length)方法可在字符串中抽取从start下标开始的指定数目的字符。
注释:start必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1指字符串中最后一个字符,-2指倒数第二个字符,以此类推;length可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从stringObject的开始位置到结尾的字串。返回值是一个新的字符串,包含从stringObject的start(包括start所指的字符)处开始的lenght个字符。如果没有指定lenght那么返回的字符串包含从start到stringObject的结尾的字符。
实例:
var str="Hello world!"
document.write(str.substr(4,7)) //输出o worl
(11)substring()方法
语法:stringObject.substring(start,stop)方法用于提取字符串中介于两个指定下标之间的字符。
注释:start必需。一个非负的整数,规定要提取的子串的第一个字符在stringObject中的位置。
stop可选。一个非负的整数,比要提取的子串的最后一个字符在stringObject中的位置多1,如果省略该参数,那么返回的子串会一直到字符串的结尾。返回值为一个新的字符串,该字符串值包含stringObject的一个子字符串,其内容是从start处到stop-1处的所有字符,其长度为stop减 start。注意,substring()方法返回的子串包括start处的字符,但不包括end处的字符。如果参数start与end相等,那么该方法返回的就是一个空串(即长度为0的字符串)。如果start比end大,那么该方法在提取子串之前会先交换这两个参数。与slice()和substr()方法不同的是substring()不接受负的参数。
实例:
var str="Hello world!";
document.write(str.substring(3,7)); //输出lo w
document.write(str.substr(3,7)); //输出lo worl
document.write(str.slice(3,7)); //输出lo w
(12)toLowerCase()和toUpperCase()方法
语法:stringObject.toLowerCase()方法用于把字符串转换为小写;stringObject.toUpperCase()方法用于把字符串转换为大写。
注释:toLowerCase()和toUpperCase()方法为无参函数。返回值为一个新的字符串,在其中stringObject的所有大写(小写)字符全部被转换为小写(大写)字符。
实例:
var str="Hello world!";
document.write(str.toLowerCase()); //输出hello world!
document.write(str.toUpperCase()); //输出HELLO WORLD!
(13)length属性
语法:stringObject.length属性返回字符串的长度或字符数目。
注释:length 是根据字符串的UTF-16编码来获取长度的,空字符串长度为0。length 不可修改。
实例:
var str="Hello world!";
document.write(str.length); //输出12
注意:match()、replace()、search()方法参见后续教程“JavaScript和正则表达式”部分。
JavaScript语法练习参见本站提供的银河统计JavaScript脚本测试工具和W3School JavaScript在线教程。
4、日期对象(Date) [返回]
JavaScript的Date对象用于处理和时间有关的数据。使用关键词new来定义一个Date对象,创建一个日期对象主要有以下两种方法:
var objDate=new Date([arguments list]); //有参数
var myDate=new Date(); //无参数,日期对象会自动取当前的日期和时间为初始值。
Date对象有参数时,参数形式主要有以下3种:
var objDate = new Date("month dd yyyy hh:mm:ss");
//后面的hh:mm:ss可选(不选的话就是默认的开始时间),而且前三项的顺序可以随意,甚至各字段后面可以加逗号
var objDate = new Date(yyyy,mth,dd,hh,mm,ss);
//除了前两个字段(年、月字段)外,其余的都是可选的(不选的话就默认为开始的),不过,此处顺序最好别随意变换
var objDate = new Date(ms);
//参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。
函数的参数含义如下:
month:用英文表示月份名称,从January到December
mth:用整数表示月份,从(1月)到11(12月)
dd:表示一个月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm:分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数
使用Date对象的函数可以方便的对日期数据进行操作。
(1)设置日期对象并指定日期
var myDate=new Date(); //设置日期对象
document.write(myDate+"<br/>"); //输出:Sun Oct 30 2016 17:54:43 GMT+0800 (中国标准时间)
myDate.setFullYear(2010,0,14); //指定日期值为2010年1月14日
document.write(myDate+"<br/>"); //输出:Thu Jan 14 2010 17:54:43 GMT+0800 (中国标准时间)
myDate.setDate(myDate.getDate()+5); //myDate的值(2010年1月14日)设为5天后
document.write(myDate+"<br/>"); //输出:Thu Jan 19 2010 17:54:43 GMT+0800 (中国标准时间)
(2)常用日期函数
setFullYear()函数:
var myDate=new Date(); //设置日期对象
myDate.setFullYear(2010,0,14); //指定日期值为2010年1月14日
document.write(myDate+"<br/>"); //输出:Thu Jan 14 2010 17:54:43 GMT+0800 (中国标准时间)
getDay()函数
用途:返回星期几。每周从星期六开始(0-6);
实例:
var myDate = new Date();
myDate.setFullYear(2010,0,14); //指定日期值为2010年1月14日
var oDay = myDate.getDay();
document.write(oDay+"<br/>"); //输出:5(星期五,0为星期天)
setDate(day)函数
用途:用于设置一个月的某一天;
实例:
var myDate = new Date();
var oDate = myDate.setDate(15);
document.write(oDate+"<br/>"); //输出日期为当前月15日,时间为当时时间
getDate()函数:
用途:返回月份里的日期;
实例:
var myDate=new Date(); //设置日期对象
var oDate = myDate.getDate(); //获得即时时期的日期数(1-31)
myDate.setFullYear(2010,0,14); //指定日期值为2010年1月14日
var oDate = myDate.getDate(); //获得指定日期的日期数(14)
document.write(oDate+"<br/>"); //输出:14
getMonth()函数
用途:返回日期变量的月份数;
实例:
var myDate = new Date();
myDate.setFullYear(2015,4,14); //指定日期值为2015年5月14日
var oMonth = myDate.getMonth(); //返回表示月份的数字(0-11)
document.write(oMonth+"<br/>"); //输出:4
getYear()函数
用途:返回日期变量的年份数;
实例:
var myDate = new Date();
myDate.setFullYear(1915,4,14); //指定日期值为1915年5月14日
var oYear = myDate.getYear(); //返回两位数的年份15
document.write(oYear+"<br/>"); //输出:15
myDate.setFullYear(2015,4,14); //指定日期值为2015年5月14日
var oYear = myDate.getYear(); //返回三位数的年份115
document.write(oYear+"<br/>"); //输出:115
myDate.setFullYear(2015,4,14); //指定日期值为2015年5月14日
var oYear = myDate.getUTCFullYear(); //返回四位数的年份2015
document.write(oYear+"<br/>"); //输出:2015
getHours()、getMinutes()、getSeconds()、getTime()函数
用途:返回日期变量的时间;
实例:
var myDate = new Date();
document.write(myDate.getHours()+":"+myDate.getMinutes()+":"+myDate.getSeconds()+":"+myDate.getMilliseconds()+"<br/>"); //输出:19:42:26:203(时:分:秒:毫秒)
document.write(myDate.getTime()+"<br/>"); //输出:1477827746203(从1970年1月1日午夜以来的毫秒数)
注意:运行该段脚本程序时间不同,输出数据会有变化,数据格式不变。
就像setTime、setDate和方法一样,有一些方法能够填充(设置属性)日期对象的所有部分。这包括下面这些函数:
setFullYear、setHours、setMinutes、setMilliseconds、setMonth、setSeconds等。
(3)对日期进行比较
var myDate=new Date()
myDate.setFullYear(2010,0,14);
var today = new Date();
if (myDate>today) {
document.write("今天还没到2010年1月14日!<br/>");
} else {
document.write("今天已经过了2010年1月14日!<br/>");
}
}
(4)计算两个日期之间的天数
var d1 = new Date(2010,9,1); //定义日期1
var d2 = new Date(2016,11,1); //定义日期2
var day = 1000*60*60*24; //一天的毫秒数
var diff = Math.ceil((d2.getTime()-d1.getTime())/(day)); //计算日期间天数
document.write("日期间天数:" + diff); //输出:2253
JavaScript语法练习参见本站提供的银河统计JavaScript脚本测试工具和W3School JavaScript在线教程。
©哈尔滨商业大学 银河统计工作室
银河统计工作室成员由在校统计、计算机部分师生和企业数据数据分析师组成,维护和开发银河统计网和银河统计博客(技术文档)。专注于数据挖掘技术研究和运用,探索统计学、应用数学和IT技术有机结合,尝试大数据条件下新型统计学教学模式。