• 周二. 12 月 31st, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

js-ECMAScript-5:常用的内置对象,数组,date,math,json,正则

admin

11 月 28, 2021

###

####

在 JavaScript 中,对象是王。如果您理解了对象,就理解了 JavaScript。

####

数据类型,之前说了有6种,

一共有6中数据类型,

string,字符串,

number,数字,

Boolean,布尔,

null,空值

undefined,未定义,

object,对象,

前5种,是基本数据类型,

object,是引用数据类型,

###

今天讲解对象数据类型,这个可以保存多个不同的基础数据类型,就像一个袋子,放了很多的基础数据类型,

###

对象有三种:

console.log()

document.write()

这个console,还有document,就是宿主对象,是已经建立好的,

###

今天学习一下,js中的内建对象,

###

数组类型

创建数组

// 使用中括号创建一个数组:

var cars = [“Saab”, “Volvo”, “BMW”];

// 使用 JavaScript 关键词 new 创建一个数组:

var cars = new Array(“Saab”, “Volvo”, “BMW”);

// 没有必要使用 JavaScript 的内建数组构造器 new Array()。使用 [] 取而代之!工作中都使用[]这种方式,new 关键词只会使代码复杂化。它还会产生某些不可预期的结果。

// 数组元素,您可以在数组中保存对象,保存函数。你甚至可以在数组中保存数组,

访问数组

//通过引用数组名来访问完整数组:

var cars = [“Saab”, “Volvo”, “BMW”];

cars

// 通过索引下标访问数组

var cars = [“Saab”, “Volvo”, “BMW”];

cars[0]

// a1[1:2] //不支持这种冒号的

修改数组元素的值

var cars = [“Saab”, “Volvo”, “BMW”];

cars[0] = “Opel”;

删除元素

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];

delete fruits[0];  

数组属性和方法

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];

fruits.length;  // 返回数组的长度

fruits.toString(); // 转换成字符串:”Banana,Orange,Apple,Mango”

fruits.join(“*”); // 也是转换成为字符串,但是可以指定分隔符,”Banana*Orange*Apple*Mango”

fruits.pop(); // 会返回并且删除掉最有一个元素,这个方法是有返回值的,就是返回了最后一个元素

fruits.push(“Kiwi”);  // 这个是在数组末尾添加一个元素,这个方法也是有返回值的,是返回新的数组的长度,

fruits.shift(); // 这个方法是删除第一个元素,也是有返回值的是返回第一个元素的值,

fruits.unshift(“Lemon”);  // 方法返回新数组的长度。

###

fruits.splice(0, 1);  // 第一个参数(0)定义新元素应该被添加(接入)的位置。第二个参数(1)定义应该删除多个元素。其余参数被省略。没有新元素将被添加。

fruits.splice(0, 1,”123″);  //  第三个参数是往里面添加元素,

###

合并两个数组

var myGirls = [“Cecilie”, “Lone”];
var myBoys = [“Emil”, “Tobias”, “Linus”];
var myChildren = myGirls.concat(myBoys);  // [“Cecilie”, “Lone”, “Emil”, “Tobias”, “Linus”]

合并三个数组

var arr1 = [“Cecilie”, “Lone”];
var arr2 = [“Emil”, “Tobias”, “Linus”];
var arr3 = [“Robin”, “Morgan”];
var myChildren = arr1.concat(arr2, arr3);

数组与值合并

var arr1 = [“Cecilie”, “Lone”];
var myChildren = arr1.concat([“Emil”, “Tobias”, “Linus”]);

###

切片,

var fruits = [“Banana”, “Orange”, “Lemon”, “Apple”, “Mango”];
var citrus = fruits.slice(3);  // 这是从下标3开始切出一个新的数组,

var fruits = [“Banana”, “Orange”, “Lemon”, “Apple”, “Mango”];
var citrus = fruits.slice(1, 3); // 这个是从下标1开始,到下标3(不包括3),切出一个新的数组,

###

数组排序

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.sort(); //这是按照首字母排序

fruits.reverse();         // 反转元素顺序

数组遍历,数组迭代

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];

for(i=0;i<fruits.length;i++){console.log(fruits[i])}

##

使用forEach方法遍历,这个只是支持ie8以上的浏览器,这个方法用的不多,一般我们遍历都是用for,

而且这个forEach,是需要传递一个函数进去,

数组中有几个元素,这个函数就会执行几次,而且每次遍历都会把元素作为实参传递到函数中,

第一个参数,是元素值,

第二个参数,是元素的下标index,

第三个参数,是整个数组,

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];

fruits.forEach(function(a,b,c){console.log(a)})

Date对象

 // 内置的Date对象,就相当于python中的模块

创建date对象

// Date 对象由新的 Date() 构造函数创建。new Date() 用当前日期和时间创建新的日期对象:

var d = new Date();

d; // Tue Aug 17 2021 10:42:09 GMT+0800 (中国标准时间)

// new Date(year, month, …) 用指定日期和时间创建新的日期对象。

var d = new Date(2018, 11, 24, 10, 33, 30, 0);

// 这个里面的参数,分别是年,月,日,时,分,秒,毫秒,7个,可以使用7个,也可以使用其中的前2个年月,或者前3个年月日,创建,如果只提供一个参数,则将其视为毫秒。

date对象的常用方法

var d1 = new Date();

d1.toLocaleString(); // 2021/8/17 上午10:52:20

//getDate() 获取日
//getDay () 获取星期
//getMonth () 获取月(0-11)
//getFullYear () 获取完整年份
//getHours () 获取小时
//getMinutes () 获取分钟
//getSeconds () 获取秒
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜)

math对象

var n = -5;
n2 = Math.abs(n); //绝对值
console.log(n2);
Math.floor(5.9); //直接往下去,这就是5,
Math.min(1,2);
Math.max(1,2);
Math.pow(10,2); //返回x的y次幂
Math.random(); //返回一个0-1之间的随机数
Math.round(5.5); //四舍五入

###############    JS内置对象-json对象      ################

//json对象
var s = '{"name":"andy","age":12}'; //这是一个字符串,怎么使用js转换成为json格式的,
var ret = JSON.parse(s);
console.log(ret);
console.log(typeof ret); //类型是一个对象

// 怎么把js中的对象,转换成字符串呢?
var s2 = JSON.stringify(ret);
console.log(s2);
console.log(typeof s2); //类型是一个字符串

// 这两个一定要学会,后面使用ajax传递数据的时候,会使用到

###############    JS内置模块-RegExp模块,正则模块      ################

//RegExp对象,正则,类似python中的re模块
//生成RegExp对象,
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
//这是以字母开头,5-11位的字母数字下滑线组成
var reg2 = reg1.test('xiaoming');
console.log(reg2); //true
var reg3 = reg1.test('2xiaoming');
console.log(reg3); //false

//简单写法
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("xiaoming"));
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("3xiaoming"));

//这里面有很多的坑
// 1,re表达式内部不能加空格,否则会产生意想不到的错误,
// console.log(/^[a-zA-Z][a-zA-Z0-9_]{5, 11}$/.test("xiaoming"));

//2,test里面不写值,默认不是空,是校验的一个undefined,这是大坑啊,
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test());//等同于console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("undefined"));

//3,字符串替换
//两种模式,g,i,
var ss = 'Ahahaha';
var sss = ss.replace("a","哈");//这样写只会替换第一个a,这个要记住,
var sss = ss.replace(/a/,"哈");//这样写只会替换第一个a,这个要记住,这是正则的写法
var sss = ss.replace(/a/g,"哈");//加一个g,就是说全局有多少就替换多少,
var sss = ss.replace(/a/gi,"哈");//加一个i,就是说忽略大小写,都替换
console.log(sss);

  

####

####

发表回复