笔记-数组类型

       给定一个对象,判定其是否为数组是非常有用的,在ECMASript5中,可以使用Array.isArray()来做此事:

	Array.isArray([]); //true
	Array.isArray({}); //false

        但是在ECMAScript5之前,要区分数组和非数组是非常困难的,typeof用于数组结果是对象 object,使用instanceof操作符看下结果:

	[] instanceof Array //true;
	({}) instanceof Array //false;

        貌似可以解决此问题,但是使用操作符instanceof的问题是Web浏览器中可能有多个窗口或窗体存在。每个窗口都有自己的javascript运行环境,有自己的全局对象。并且,每个全局对象都有一组自己的构造函数。因此一个窗体中的对象不可能是另外一个窗体中的构造函数实例。这也说明操作符instanceof不是可靠的数组检测方法。

       解决方法是检测对象的类属性,对数组而言,该属性是Array,在ECMAScript3中这段函数可以这么写:

	var isArray = Function.isArray || function(o) {
		return typeof o === 'object' &&
			Ojbect.prototype.toString.call(o) === '[object Array]';
	}

其实上述代码也是ECMAScript5中 Array.isArray()所做的事情。

看到这段话,我突然想起Jquery源码关于isArray的表述:

	isArray: Array.isArray || function( obj ) {
		return jQuery.type(obj) === "array";
	},

 

	type: function( obj ) {
		return obj == null ?
			String( obj ) :
			class2type[ core_toString.call(obj) ] || "object";
	},
	core_toString = Object.prototype.toString,
	// Populate the class2type map
	jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
		class2type[ "[object " + name + "]" ] = name.toLowerCase();
	});

当我们看到这些代码时,是不是觉得就是刚才所描述那样实现的呢。

好的,我会为你介绍Python中的数组。 在Python中,数组是一种存储元素的数据结构。与列表不同,数组是固定大小的,且元素类型必须相同。 要使用数组,需要先导入array模块。下面是一个创建数组的示例: ```python import array as arr # 创建一个整数类型数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 打印数组 print(a) ``` 在上面的示例中,我们使用了`array`模块创建了一个整数类型数组,并初始化了它。要注意的是,第一个参数是一个字符,用于指定数组元素的类型。在本例中,我们使用了`i`,表示整数类型。 除了整数类型之外,还有其他类型可以使用,如`f`表示浮点数,`d`表示双精度浮点数,`b`表示布尔类型等。 在数组中,可以使用索引来访问元素,如下所示: ```python import array as arr # 创建一个整数类型数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 访问数组中的第一个元素 print(a[0]) # 修改数组中的第二个元素 a[1] = 6 # 打印数组 print(a) ``` 在上面的示例中,我们使用了索引`0`来访问数组中的第一个元素,使用索引`1`来修改数组中的第二个元素。 除了使用索引来访问和修改元素外,还可以使用循环来遍历数组中的所有元素,如下所示: ```python import array as arr # 创建一个整数类型数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 遍历数组中的所有元素 for i in a: print(i) ``` 在上面的示例中,我们使用了`for`循环来遍历数组中的所有元素,并打印每个元素的值。 这就是Python中数组的基本用法。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值