As脚本 as3 bytearrayy多重属性

excel公式出现“不能设置类range的formulaArray属性”_百度知道JS 操作Array数组的方法及属性实例解析
字体:[ ] 类型:转载 时间:
本篇文章主要是对JS操作Array数组的方法及属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
本文总结了Array数组的3个属性,length 属性、prototype 属性、constructor 属性使用,并附注数组对象的8个分类及多个方法使用,具体如下:
对象的3个属性1、length 属性
length 属性Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:
var arr=[12,23,5,3,25,98,76,54,56,76];//定义了一个包含10个数字的数组alert(arr.length); //显示数组的长度10arr.length=12; //增大数组的长度alert(arr.length); //显示数组的长度已经变为12alert(arr[8]); //显示第9个元素的值,为56arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃alert(arr[8]); //显示第9个元素已经变为"undefined"arr.length=10; //将数组长度恢复为10alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设置,它也有可能被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。例如下面的代码:
var arr=[12,23,5,3,25,98,76,54,56,76];//定义了一个包含10个数字的数组alert(arr.length);//显示10arr[15]=34;alert(arr.length);//显示16
代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr[15]=34,这时再用alert语句输出数组的长度,得到的是16。无论如何,对于习惯于强类型编程的开发人员来说,这是一个很令人惊讶的特性。事实上,使用new Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。
由上面的介绍可以看到,length属性是如此的神奇,利用它可以方便的增加或者减少数组的容量。因此对length属性的深入了解,有助于在开发过程中灵活运用。
2、prototype 属性
prototype 属性返回对象类型原型的引用。prototype 属性是 object 共有的。
objectName.prototype
objectName 参数是object对象的名称。
说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
对于数组对象,以以下例子说明prototype 属性的用途。
给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。
function array_max( ){&& var i, max = this[0];&& for (i = 1; i & this. i++)&& {&&&&&& if (max & this[i])&&&&&& max = this[i];&& }&&}
Array.prototype.max = array_var x = new Array(1, 2, 3, 4, 5, 6);var y = x.max( );
该代码执行后,y 保存数组 x 中的最大值,或说 6。
3、constructor 属性
constructor 属性表示创建对象的函数。
object.constructor //object是对象或函数的名称。
说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。
x = new String("Hi");if (x.constructor == String) // 进行处理(条件为真)。//或function MyFunc {// 函数体。}
y = new MyFif (y.constructor == MyFunc) // 进行处理(条件为真)。
对于数组来说:y = new Array();
数组对象的8个分类及多个方法
1.数组的创建
var arrayObj = new Array(); //创建一个默认数组,长度是0var arrayObj = new Array(size); //创建一个size长度的数组,注意Array的长度是可变的,所以不是上限,是长度var arrayObj = new Array(item1,item2,); //创建一个数组并赋初值要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
2、数组的元素的访问
var ArrayItemValue=arrayObj[1]; //获取数组的元素值arrayObj[1]= "要赋予新值"; //给数组元素赋予新的值
本文总结了Array数组的3个属性,length 属性、prototype 属性、constructor 属性使用,并附注数组对象的8个分类及多个方法使用,具体如下:
对象的3个属性1、length 属性
length 属性Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:
var arr=[12,23,5,3,25,98,76,54,56,76];//定义了一个包含10个数字的数组alert(arr.length); //显示数组的长度10arr.length=12; //增大数组的长度alert(arr.length); //显示数组的长度已经变为12alert(arr[8]); //显示第9个元素的值,为56arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃alert(arr[8]); //显示第9个元素已经变为"undefined"arr.length=10; //将数组长度恢复为10alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设置,它也有可能被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。例如下面的代码:
var arr=[12,23,5,3,25,98,76,54,56,76];//定义了一个包含10个数字的数组alert(arr.length);//显示10arr[15]=34;alert(arr.length);//显示16
代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr[15]=34,这时再用alert语句输出数组的长度,得到的是16。无论如何,对于习惯于强类型编程的开发人员来说,这是一个很令人惊讶的特性。事实上,使用new Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。
由上面的介绍可以看到,length属性是如此的神奇,利用它可以方便的增加或者减少数组的容量。因此对length属性的深入了解,有助于在开发过程中灵活运用。
2、prototype 属性
prototype 属性返回对象类型原型的引用。prototype 属性是 object 共有的。
objectName.prototype
objectName 参数是object对象的名称。
说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
对于数组对象,以以下例子说明prototype 属性的用途。
给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。
function array_max( ){&& var i, max = this[0];&& for (i = 1; i & this. i++)&& {&&&&&& if (max & this[i])&&&&&& max = this[i];&& }&&}
Array.prototype.max = array_var x = new Array(1, 2, 3, 4, 5, 6);var y = x.max( );
该代码执行后,y 保存数组 x 中的最大值,或说 6。
3、constructor 属性
constructor 属性表示创建对象的函数。
object.constructor //object是对象或函数的名称。
说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。
x = new String("Hi");if (x.constructor == String) // 进行处理(条件为真)。//或function MyFunc {// 函数体。}
y = new MyFif (y.constructor == MyFunc) // 进行处理(条件为真)。
对于数组来说:y = new Array();
数组对象的8个分类及多个方法
1.数组的创建var arrayObj = new Array(); //创建一个默认数组,长度是0var arrayObj = new Array(size); //创建一个size长度的数组,注意Array的长度是可变的,所以不是上限,是长度var arrayObj = new Array(item1,item2,); //创建一个数组并赋初值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
2、数组的元素的访问var ArrayItemValue=arrayObj[1]; //获取数组的元素值arrayObj[1]= "要赋予新值"; //给数组元素赋予新的值
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PHP常用数组函数介绍
投稿:hebedich
字体:[ ] 类型:转载 时间:
编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数。在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大量的函数,都记住这些函数不太现实,但常用的函数还是要熟练使用的,大部分的函数的使用方法可以通过查询PHP的手册来使用。
在编程中查手册是少不了的,所以要会学着使用已有的东西,就如PHP中的数组处理函数已经有排序函数了,为什么还要在写东西是费着劲去写冒泡或者堆排或者快排呢。
  编程是间接的过程,也是重用的过程,要写出好的代码是少不了设计模式来做支撑的,可能对初学者来说学习设计模式有些吃力(就像我当初看设计模式时,真是有点费劲),不过等你的代码量有一定积累时,在研究设计模式时,感觉设计模式真的挺有用的,能帮助你写出漂亮的代码。说着说着有点跑偏了,还是来总结一下php中对数组操作的常用函数吧。
  以下总结的数组常用的函数,可能有些读者会感觉有些少,众人拾柴火焰高吗,如果感觉还有其他常用的数组处理函数,给个评论留下呗,不要吝啬自己的知识嘛,和别人分享东西不是一件很快乐的东西吗。还有,下面的代码出自本人之手,不过是两年前写的代码了,欢迎大家批评指正。
array_splice() 删除数组中的指定元
array_splice(数组名,从前往后删的个数,new一个数组的大小);没有第三参数也就没有返数组,没有第三个参数时,第二个参数的意义为从前往后保留几个
$my_array=array(
//建立数组
"hehe"=&"haha",
"A"=&"lu",
"lu"=&"ge"
$new=array_splice($my_array,1,3);
//使用array_splice(数组名,从前往后删的个数,new一个数组的大小);
var_dump($new);
&&& 结果:array(2) { ["A"]=& string(2) "lu" ["lu"]=& string(2) "ge" }
2、foreach()数组的遍历
&&& 用法:foreach(数组 as 键名=&键值)或foreach(数组 as 键值)
$my_array=array(
//建立数组
"hehe"=&"haha",
"A"=&"lu",
"lu"=&"ge"
foreach($my_array as $key=&$value)
echo $key."=&".$value."&br/&";
输出结果:
hehe=&haha
3、数组的排序
&&& (1)sort()和rsort()&&& 按键值排序sort()从小到大,rsort()从大到小
&&&&&&&&&&& sort ()&& exp :&&&&
$my_array=array(1,2,3,6,7,8,9,4,5);//建立数组
sort($my_array);
foreach($my_array as $keys=&$value)
echo $keys."=&".$value."&br/&";
&&&&&&&&&& 输出结果:
&&&&&&&&&&&& rsort() exp:
$my_array=array(1,2,3,6,7,8,9,4,5);//建立数组
rsort($my_array);
foreach($my_array as $keys=&$value)
echo $keys."=&".$value."&br/&";
& 输出结果:
&&& (2).asort()和arsort()和上面的原理一样,不过不改变键名和键值的对应关系
$my_array=array(1,2,3,6,7,8,9,4,5);//建立数组
asort($my_array);
foreach($my_array as $keys=&$value)
echo $keys."=&".$value."&br/&";
输出结果:
(3)ksort()和krsort()是按键名的大小排序
4.数组的数学类函数
array_sum()计算数组的所有键值的和& count()计算元素的个数
$my_array=array(1,2,3,6,7,8,9,4,5);//建立数组
echo array_sum($my_array);
&&& 输出结果:45
5.其他函数
array_unique() 去除数组中的相同元素
in_array()检测一个值是否在数组中(返回true和false)
array_search()返回的是键或值,返回的是键值所对应的键名
shuffle()打乱原有的数组
$my_array=array(1,2,3,6,7,8,9,4,5,5,5,5);//建立数组
array_unique($my_array);//去除数组中的相同元素
var_dump($my_array);
echo "&br/&";
echo in_array(5,$my_array);
echo "&br/&";
$new=array_search(6,$my_array);//返回的是键值所对应的键名
输出结果:
array(12) { [0]=& int(1) [1]=& int(2) [2]=& int(3) [3]=& int(6) [4]=& int(7) [5]=& int(8) [6]=& int(9) [7]=& int(4) [8]=& int(5) [9]=& int(5) [10]=& int(5) [11]=& int(5) }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PHP数组无限分级数据的层级化处理代码
字体:[ ] 类型:转载 时间:
在很多朋友写无限级分类数据时都直接使用递归来操作,下面我来介绍一下关于PHP无限分级代码优化方法,有需要的朋友可参考一下
代码如下:/**&* 创建父节点树形数组&* 参数&* $ar 数组,邻接列表方式组织的数据&* $id 数组中作为主键的下标或关联键名&* $pid 数组中作为父键的下标或关联键名&* 返回 多维数组&**/function find_parent($ar, $id='id', $pid='pid') { & foreach($ar as $v) $t[$v[$id]] = $v;& foreach ($t as $k =& $item){&&& if( $item[$pid] ){&&&&& if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )&&&&&&&& $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];&&&&&&&&& $t[$k]['reference'] =&&& }& } & return $t;}/**&* 创建子节点树形数组&* 参数&* $ar 数组,邻接列表方式组织的数据&* $id 数组中作为主键的下标或关联键名&* $pid 数组中作为父键的下标或关联键名&* 返回 多维数组&**/function find_child($ar, $id='id', $pid='pid') {& foreach($ar as $v) $t[$v[$id]] = $v;& foreach ($t as $k =& $item){&&& if( $item[$pid] ) {&&&&& $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];&&&&& $t[$k]['reference'] =&&& }& }& return $t;}示例: 代码如下:$data = array( &&& array('ID'=&1, 'PARENT'=&0, 'NAME'=&'祖父'), &&& array('ID'=&2, 'PARENT'=&1, 'NAME'=&'父亲'), &&& array('ID'=&3, 'PARENT'=&1, 'NAME'=&'叔伯'), &&& array('ID'=&4, 'PARENT'=&2, 'NAME'=&'自己'), &&& array('ID'=&5, 'PARENT'=&4, 'NAME'=&'儿子')); $p = find_parent($data, 'ID', 'PARENT'); $c = find_child($data, 'ID', 'PARENT');上面两种方法是将所有节点按id平摊到一个数组中,然后找到他们的 parent 或 children ,通过引用将 平摊的元素挂接到 parent 、children 下,但被引用的元素依然存在于平摊的数组中,因此,在实际应用时,最好标记那些被引用的元素,以避免以他们为根开始遍历,导致重复。 代码如下:&&&&&&& foreach ($p as $key =& $item) {&&&&&&&&&&& if($item['reference'])&&&&&&&&&&& print_r($item);&&&&&&& }&&&&&&& foreach ($c as $key =& $item) {&&&&&&&&&&& if($item['reference'])&&&&&&&&&&& print_r($item);&&&&&&& }递归法,PHP 数组元素被删除后,数组游标会归零,因此在遍历过程中一些已经找到 “归宿” 的元素也不得不留在数组中,无法缩减后继元素的搜索范围: 代码如下:$mylist = array(array( 'parent_id'=&0,'id'=&1),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&0,'id'=&2),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&0,'id'=&3),&&& &&&&&&&&&&&&&&&&&&& array( 'parent_id'=&2,'id'=&4),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&2,'id'=&5),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&3,'id'=&6),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&3,'id'=&7),&&& &&&&&&&&&&&&&&&&&&& array( 'parent_id'=&4,'id'=&8),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&5,'id'=&9),&&&&&&&&&&&&&&&&&&& array( 'parent_id'=&5,'id'=&10)&&&&&&&&&&&&&&& );
&&& function _findChildren($list, $p_id){&&& //数据层级化,&&&&&&&&& $r = array();&&&&&&&&& foreach($list as $id=&$item){&&&&&&&&&&& if($item['parent_id'] == $p_id) {&&&&&&&&&&&&&&&&&& $length = count($r);&&&&&&&&&&&&&&&&& $r[$length] = $&&&&&&&&&&&&&&&&& if($t = $this-&_findChildren($list, $item['id']) ){&&&&&&&&&&&&&&&&&&&&& $r[$length]['children'] = $t;&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& &&&&&&&&&&& }&&&&&&&&& }&&&&&&&&& return $r;&&& }&
print_r(_findChildren($mylist, 0));
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

参考资料

 

随机推荐