在上章学习了:3.qml-ECMAScript_03(Object基类对象、String对象)
本章我们来初步学习Array对象和Math对象.
Array数组对象
ECMAScript提供了Array数组对象,并且该Array的元素类型还可以各个不同.
创建空数组:
var arr1 = new Array(); var arr2 = new Array; var arr3 = []; console.log(arr1.length,arr2.length,arr3.length);
创建有内容的数组
var arr4 = [5]; // 数组长度为1,arr4[0] = 5 var arr5 = new Array(5); // 数组长度为5,内容未初始化 var arr6 = new Array("5",5,123,true); // 数组长度为4,内容已初始化 var arr7 = [1,2,3]; // 数组长度为3,内容已初始化 console.log(arr4.length,arr5.length,arr6.length,arr7.length) //打印:1 5 4 3 console.log(arr4,arr5,arr6,arr7) // 打印: [5] [undefined,undefined,undefined,undefined,undefined] ["5",5,123,true] [1,2,3]
通过下标读写数组
var arr = new Array("5",5,123,true); // 数组长度为4,内容为["5",5,123,true] console.log(arr[0] == arr["0"]); // 通过下标访问数组时,字符串"0"和数字0是一样的. arr[0] =6; // 通过下标更改数组内容 arr[-1.2] = 100; // 由于-1.2,不是数组成员,所以会把-1.2转为字符串,创建名为‘1.2‘的属性,并赋值100 for (var index in arr) { // 循环打印数组属性成员 console.log("for:",index,arr[index]) // 打印: for: 0 5 // for: 1 5 // for: 2 123 // for: 3 true // for: -1.2 100 }
通过更改length来改变数组长度
var arr =[1,2,3,4]; arr.length=2; // 删除了数组3,4元素 arr.length=0; // 重置数组 arr.length=5; // 重新声明长度,但是内容是未定义的,等价于var arr5 = new Array(5);
判断数组类型
数组对象提供的方法
示例如下:
var arr = new Array(5,5,1,2,3,4,13,true,false,"s","u"); arr.sort(); console.log(arr); // 打印:[1,13,2,3,4,5,5,s,true,u],说明都是将内容转化为字符串,进行字母正序排列 console.log(typeof arr[7] == "boolean"); // 自己提供排序方法进行排序,bool类型排在前面,字符串类型排在中间,数字类型排在后面 arr.sort( function(a,b) { if (typeof a == typeof b) { if(a > b) { return 1; } else { return -1; } } else if (typeof a == "number" || typeof b == "number") { if(typeof a == "number") { return 1; } else { return -1; } } else if (typeof a == "string" || typeof b == "string") { if(typeof a == "string") { return 1; } else { return -1; } } }); console.log(arr); // 打印 [false,true,s,u,1,2,3,4,5,5,13] console.log(arr.toString()); // 打印 false,true,s,u,1,2,3,4,5,5,13
示例如下所示;
var arr =[1,2,3,4,5,6,7]; console.log(arr.slice(2)); // 打印[3,4,5,6,7] console.log(arr.slice(2,5)); // 打印[3,4,5] console.log(arr.slice(2,-1)); // 打印[3,4,5,6] arr.splice(1,3); // 从[1,2,3,4,5,6,7]删除掉[2,3,4] console.log(arr); // 打印[1,5,6,7] arr.splice(2,0,1,2,3,"456"); // 在下标1位置处插入[1,2,3,"456"] console.log(arr); // 打印[1,5,1,2,3,456,6,7]
示例如下所示:
var arr =[1,2,3,4,5,6,7]; arr.forEach(function(elem,index,arr) { elem += 1; }); console.log(arr); // 打印[1,2,3,4,5,6,7],由于"elem += 1;"中的elem是定义的临时变量进行+1的,所以根本没有改变对象自身内容 var arr2 = arr.map(function(elem,index,arr) { return elem *= 2; // 返回到arr2中 }); console.log(arr2); // 打印[2,4,6,8,10,12,14] var arr3 = arr.filter(function(elem,index,arr) { if (elem%2 == 1) { // 过滤,只要奇数内容 return elem; } }); console.log(arr3); // 打印[1,3,5,7] var result1 = arr.some(function(elem,index,arr) { return (elem === 3); }); console.log(result1); // 打印true var result2 = arr.every(function(elem,index,arr) { return (elem === 3); }); console.log(result2); // 打印false console.log(arr.indexOf(3,1)); // 查找数字为‘3‘的索引值,打印2,因为arr[2] = 3
Math对象
参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
Math对象可以不用创建直接使用Math.属性和Math.方法名();
它的属性有
三角方法
sin、cos、tan、cot度数表如图所示:
示例如下所示:
var angle = 45; var arc = angle/180 * Math.PI; // 将45°转换为弧度 console.log(arc); // 45°的弧度值,打印 0.7853 console.log(Math.cos(arc)); // cos45°的值,打印 0.7071067811865476 console.log(Math.sin(arc)); // sin45°的值,打印 0.7071067811865476 console.log(Math.tan(arc)); // tan45°的值,打印 0.9999999999999999 console.log(Math.acos(0.7071)*180/Math.PI); // 将cos45°的值转换为角度值acos45°的值,打印45° console.log(Math.asin(0.7071)*180/Math.PI); // asin45°的值,打印45° console.log(Math.atan(1)*180/Math.PI); // atan45°的值,打印45° console.log(Math.atan2(Math.sqrt(3),3)*180/Math.PI); //(根号3,0)轴与 (根号3,3)轴之间的角度值,打印30°
其它方法
示例如下所示:
var x = 25.4; console.log(Math.ceil(x)); // 向上取整,26 console.log(Math.round(x)); // 四舍五入, 25 console.log(Math.floor(x)); // 向下取整,25 console.log(Math.sqrt(4)); // 平方根,2 console.log(Math.random()); // 返回 0 ~ 1的随机值 console.log(Math.random() * 2); // 返回 0 ~ 2的随机值 console.log(10 + Math.random() * 10); // 返回 10 ~ 20的随机值
4.qml-ECMAScript(Array对象、Math对象)
原文:https://www.cnblogs.com/lifexy/p/14540500.html