js 数据类型 Array,Object,RegExp

一、Array类型

js 中 Array 数据类型非常强大,非常灵活1.对于一个数组,它的每一项都可以是不同的数据类型2.数组长度并不是一个固定的值,它是可以随时变化的3.它可以用来模拟数据结构中的 “队列” 和 “栈”,操作起来十分方便

构造:

var arr = new Array();var arr = [];var arr = new Array(1,2,3,4);console.log(arr);// [1, 2, 3, 4]var arr = [1,2,3,4];console.log(arr);// [1, 2, 3, 4]方法和属性:

<1> length, join

length //并非只读属性,可以用它来改变数组的长度join();// 连接数组中的元素,返回字符串,可带参数,默认为","分隔

var nums = [1,2,3,4];console.log(nums.join());// 1,2,3,4console.log(nums.join("/"));// 1/2/3/4console.log(nums);// [1, 2, 3, 4]console.log(nums.length);// 4nums.length = 5;console.log(nums.length);// 5nums.push(5);console.log(nums.length);// 6console.log(nums);// [1, 2, 3, 4, 5: 5]<2>toString(),toLocaleString(),valueOf()

var nums = [1,2,3,4];console.log(nums.toString());// 1,2,3,4console.log(nums.toLocaleString());// 1,2,3,4console.log(nums.valueOf());// [1, 2, 3, 4]<3> push(), pop(), unshift(), shift(), splice()

push(param);//从数组末端压入元素parampop();//从数组末端移除一个元素unshift(param);//从数组头部加入元素paramshift();//从数组头部删除一个元素tip:这几个方法都十分好理解,,这里不就再举例了。值得注意的是unshift()与shift()的功能不要搞混淆了

splice();// 向/从数组中添加/删除项目,然后返回被删除的元素。它会直接对数组进行修改语法:arr.splice(index, delmany [, item1, item2……]);

添加元素:

var nums = [1,2,3,4,5,6,7];var arr = nums.splice(3, 0, 3, 3);console.log(arr);// []console.log(nums); // [1, 2, 3, 3, 3, 4, 5, 6, 7]第一个参数表示要操作的索引,第二个参数表示要删除的个数,这里[delmany == 0]表示不删除元素,后面的参数表示要加入的元素console.log(arr)返回[],表示此时不返回任何数据添加一个数组:

var nums = [1,2,3,4,5,6,7];var arr = nums.splice(3, 0, [3, 3]);console.log(arr);// []console.log(nums); // [1, 2, 3, Array[2], 4, 5, 6, 7]删除元素:

var nums = [1,2,3,4,5,6,7];var arr = nums.splice(3, 2);console.log(arr);// [4, 5]console.log(nums); // [1, 2, 3, 6, 7]console.log(arr)返回[4, 5],表示此时返回[4, 5],而这恰好是删除的数据

替换元素:

var nums = [1,2,3,4,5,6,7];var arr = nums.splice(3, 1, "rgy");console.log(arr);// [4]console.log(nums); // [1, 2, 3, "rgy", 5, 6, 7]console.log(arr)返回[4],表示此时返回删除的数据[4]console.log(nums)返回[1, 2, 3, "rgy", 5, 6, 7],表示index == 3上的元素替换成了"rgy"

<4> sort() 排序

sort();//默认以字符串为标准排序的var values = [4, 12, 10, 5, 9];values.sort();// [10, 12, 4, 5, 9]这显然不是我们想要的,要真正达到排序的目的,需要自己写一个方法,然后用sort辅助以达到目的。

var values = [4, 12, 10, 5, 9];function compare(value1, value2){if(value1 < value2){return -1;}else if(value1 > value2){return 1;}else{return 0;}}values.sort(compare);//[4, 5, 9, 10, 12]目的已达到!

<5>concat(),slice()

var nums = [1,2,3,4,5,6,7];var arr = nums.concat(8,9);console.log(nums);//[1, 2, 3, 4, 5, 6, 7]console.log(arr);//[1, 2, 3, 4, 5, 6, 7, 8, 9]可见concat()方法不会影响原数组,它会返回一个新的数组

var nums = [1,2,3,4,5,6,7];var arr = nums.slice(-2);console.log(nums);//[1, 2, 3, 4, 5, 6, 7]console.log(arr);//[6, 7]同上,可见slice()方法不会影响原数组,它会返回一个新的数组

二、Object类型

构造:

<1>var cat = new Object();cat.name = '喵喵';<2>var cat = {};cat.name = '喵喵';<3>var obj = {name : '喵喵'}var cat = new Object(obj);<4>function Cat(name){return {name:name}}var cat = Cat('喵喵');<5>function Cat(name){this.name = name;}var cat = new Cat();获取属性:

<1> obj.name<2> obj[‘name’]tip:注意二者的区别,<2>中的方式[]中可以是参数,<1>中的方式不可以

属性的遍历:

var obj = {name : 'rgy',age : '21',addr : 'hunan',list : [1, 2, 3, 4],map: {key : "value",arr : [4, 3, 2, 1]}};obj.valueOf();// 返回指定对象的原始值for(var key in obj) {console.log("key: " + key);console.log("value: " + obj[key]);}结果:

for(var key in obj) {console.log("key: " + key);console.log("value: " , obj[key]);}结果:

回味起来却有久久不会退去的余香。

js 数据类型 Array,Object,RegExp

相关文章:

你感兴趣的文章:

标签云: