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,4
console.log(nums.join("/"));// 1/2/3/4
console.log(nums);// [1, 2, 3, 4]
console.log(nums.length);// 4
nums.length = 5;
console.log(nums.length);// 5
nums.push(5);
console.log(nums.length);// 6
console.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,4
console.log(nums.toLocaleString());// 1,2,3,4
console.log(nums.valueOf());// [1, 2, 3, 4]

<3> push(), pop(), unshift(), shift(), splice()

push(param);//从数组末端压入元素param

pop();//从数组末端移除一个元素

unshift(param);//从数组头部加入元素param

shift();//从数组头部删除一个元素

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]);
}

结果:

tip:

注意二者的区别,主要是console.log()方法处理上的区别

一个用加号,一个用逗号。通过实验,可见使用","打印出的结果更全面,更具体

三、RegExp类型

构造:

<1> 显示构造:
var reg = new RegExp("/^\d{5,8}$/");

var reg = new RegExp("/^\d{5,8}$/", flag);

<2> 隐示构造:
var reg = /^\d{5,8}$/;

var reg = /^\d{5,8}$/flag;

说明:

flag 设置正则表达式的标志信息,是可选项

有三个可选值:

i : 不区分大小写

m : 多行匹配

g : 全局匹配

方法:

<1>

test()方法:

reg.test(str); // 返回true/false

var str = "12abc678abc2hh";
var reg = /abc/;
console.log(reg.test(str)); //true
reg = /rgy/;
console.log(reg.test(str)); //false

<2>

exac()方法:

reg.exec(str); // 以数组的形式返回第一个匹配的值

以数组的形式返回第一个匹配的值,嗯,这句话有点绕,看下面的例子吧,一看就明白了

var str = "12abc678abc2hh";
var reg = /abc/;
console.log(reg.exec(str)); // ["abc", index: 2, input: "12abc678abc2hh"]

时间: 2024-08-12 16:56:36

js 数据类型 Array,Object,RegExp的相关文章

判断JS数据类型的几种方法

原文转自http://www.cnblogs.com/onepixel/p/5126046.html! 说到数据类型,我们先说一下JavaScript 中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Function,Array,RegExp,Date,... 很多时候我们都需要通过判断变量的数据类型来进行下一步操作,下面我们介绍常用的4种方法: typeof ''; // strin

总结的JS数据类型判定(非常全面)

用typeof 来检测数据类型 Javascript自带两套类型:基本数据类型(undefined,string,null,boolean,function,object)和对象类型. 但是如果尝试用typeof 来检测对象类型都一律返回"object"并不能加以区分 typeof null // "object" typeof [] // "object" typeof document.childNodes //"object&qu

js数据类型检测小结

在js中,有四种用于检测数据类型的方式,分别是: typeof 用来检测数据类型的运算符 instanceof 检测一个实例是否属于某个类 constructor 构造函数 Object.prototype.toString.call() 原型链上的Object对象的toString方法 下面我们就来分别介绍一下上面四种方法的适用场景和局限性. typeof 用来检测数据类型的运算符 使用typeof检测数据类型,返回值是字符串格式.能够返回的数据类型是:"number","

js数据类型判断和数组判断

这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number:什么整数啊浮点数啊都叫数字,你懂的~ Boolean: 就是true和false啦 undefined:未定义,就是你创建一个变量后却没给它赋值~ null: 故名思久,null就是没有,什么也不表示 object: 这个我也很难解释的

由js apply与call想到的js数据类型

js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 1 obj.call(null, 1,2,3,4); 免费会员网 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: 1 2 3 4 5 6 7 8 9 var max=Math.max.apply(null

鉴别JS数据类型的全套方法

ECMAScript 标准定义了 7 种数据类型:Boolean.Null.Undefined.Number.String.Symbol(ES6新增)和Object,除Object以外的那6种数据类型也被称为基本数据类型,另外还有Array.Function等复杂数据类型.本文介绍一般类型判断方法,最后总给一套全面的数据类型判断方法. 一.typeof typeof是一个一元运算符(不是一个函数方法),可以鉴别null以外的基本数据类型以及Object和Function.它的返回值是小写的字符串

由js apply与call方法想到的js数据类型(原始类型和引用类型)

原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b,那么此时第一个参数就为a,没有则为null),call方法第二个参数为一个列表,可以是 obj.call(null, 1,2,3,4); 而apply第二个参数为数组.这就是区别,下面来说说对它们的认识. apply最常用的就是查找数组中的最大与最小值,还可以将2个数组合并: var max=Mat

JS 数据类型、赋值、深拷贝和浅拷贝

js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. null. 一个表明 null 值的特殊关键字. JavaScript 是大小写敏感的,因此 null 与 Null.NULL或其他变量完全不同. undefined. 变量未定义时的属性. Number. 表示数字,例如: 42 或者 3.14159. String. 表示字符串,例如:"Howdy" Symbol ( 在 ECMAScript 6 中新添加的类型)..一种数据类型,它的实例是

JS数据类型 构造函数 原型链

js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类型就是简单的操作值,引用数据类型,把引用地址赋值给变量 堆内存 就是存放代码块的,存放形式有两种,一种是对象以键值对的形式存放 另一种就是函数  以字符串的形式存放 案例 引用数据类型的赋值,是把引用地址赋给它,在修改属性的时候,通过地址查找然后改掉 应用数据类型,如何操作? 先通过引用地址去查找堆