当前位置: 首页 > 文档资料 > TJS2 参考手册 >

Array 类

优质
小牛编辑
122浏览
2023-12-01

 Array 类是处理数组的类型。

 可以通过创建这个类的实例,并在间接成员选择运算符([ ])中传递指定的索引的方式将这个类作为数组使用。索引为整数,0表示数组中的第一个元素,1表示第二个对象,依此类推。如果指定负数作为索引,则将被当作从数组的最后开始指定元素。 (-1 表示最后的对象)。

例:
vara=newArray();
vari;
for(i=0;i<100;i++)a[i]=i;

 不必要对数组的大小做出定义。Array 类将自动扩展到用户使用的索引的大小,并将没有被赋值的元素初始化为 void 。

 此外,Array 类拥有 count 属性,该属性表示数组的大小。通过对 count 属性赋值,也可以改变数组的大小。

表达式声明数组

 使用 [ ] ,可以在表达式中现场记述 Array 类型的对象。[ ] 中应该按顺序列举作为数组初始元素的表达式,元素之间用逗号分割。比如说,如果执行
var ar = ["a", "b", "c"]; 这样一个表达式,则变量 ar 将指向一个包含 "a" "b" "c" 这几个元素的 Array 类型对象。

count

 count 属性表示数组的大小。

load

 load 方法,可以从文件中读取数据。

语法:load(<文件名>,<模式=''>)


 本方法将从文本文件读取数组数据,将文本文件中的文本按行作为元素放入数组,最终count属性将和文件的行数相等。
 模式参数可以用一个字符串指定读取文件时的模式。模式的含义将随着TJS运行的环境有所不同。如果在 "o" 之后写入一个十进制偏移量,则将从与这个数值相等个字节后的位置开始读取。
 随着 TJS 运行环境的不同,可能存在本方法和 save 方法、 saveStruct 方法无法使用的情况。
 load 方法将返回这个 Array 类对象自身。

save

 save 方法可以向文件写入数据。

语法:save(<文件名>,<模式=''>)


 本方法将数组写入文件。本方法基本上是一行一个元素顺序记录各个元素数据,但遇到对象和类、函数等类型的数据,文件中对应的位置将是空行。
 模式参数可以用一个字符串指定写入文件时的模式。模式的含义将随着TJS运行的环境有所不同,对于吉里吉里来说,指定 "c" 则将对文件进行简单的加密( 可以使用 load 方法读取 ),指定 "z" 则将把文件压缩保存( 无法与 "c" 共用,该模式保存的数据也可以直接用 load 方法读取 )。如果在 "o" 之后写入一个十进制偏移量,则将从与这个数值相等个字节后的位置开始写入。
 save 方法将返回这个 Array 类对象自身。

split

 split 方法可以对字符串进行分割。

语法:split(<模式/分隔符集合>,<字符串>,<(保留)>,<是否忽略空的元素=false>)

 初始化数组,并用模式字符串或分隔符分割字符串,将结果复制到数组中。
 需要在第一个参数中指定模式或者分隔符集合。
 需要使用模式匹配时,请传入相关的正则表达式对象。
 需要使用分隔符集合时,请传入需要被识别为分隔符的字符。如果传入字符串,则字符串中的各个字符都将被做为分隔符处理。
 第三个参数为了将来的版本暂时保留。
 参数“是否忽略空的元素”,在不希望把空的元素( 比如说指定逗号为分隔符时的 ,,,,,,, 等 )复制到数组时可以被指定为true。
 请注意参数的顺序。

join

 join 方法可以把数组合并为一个字符串。

语法:join(<分隔符>,<(保留)>,<是否忽略空的元素=false>)

 将数组中的各个元素结合,各个元素之间用指定的分隔符分割,并返回合并后的字符串。
 参数“是否忽略空的元素”为 true 时,数组元素的void将被忽略。

例:
varar=["a","b",void,"d"];
vars1=ar.join(",");//将s1赋值为"a,b,,d"
vars2=ar.join(",",,true);//将s2赋值为"a,b,d"

reverse

 reverse 方法可以把数组的元素按照顺序反过来排列。

语法:reverse()

sort

 sort 方法将对数组进行排序。

语法:sort(<排序顺序='+'>,<是否进行稳定排序=false>)

 排序顺序需要时以下的字符串中的一个。升序就是将数组对象从小到大重新排列,降序则相反。省略排序顺序参数则将默认按照 "+" 排序。

"+":升序排列(利用普通的<运算符进行比较)
"-":降序排列
"0":按照数值顺序升序排列(10,2,1将被排序为1,2,10)
"9":按照数值顺序降序排列
"a":按照字符串顺序升序排列("a","c","b"将被排序为"a","b","c")
"z":按照字符串顺序降序排列


 可以指定函数代替字符串作为排序顺序的依据。函数需要拥有两个参数,并在当第一个参数应排在第二个参数之前时返回 true 。(请注意,TJS 的 sort 与 JavaScript 的 sort 方法,作为排序顺序传递的函数所需要的参数以及返回值不同 )。

 第二个参数将需要指定是否进行稳定排序。如果省略此参数则将默认为 false ,也就是进行不稳定排序。所谓的“稳定排序”,就是指相等的数组元素的顺序在排序后也相同的排序方法。对于不稳定排序,则不保证相等的元素在排序后和原先的顺序相同。

例:
vararray=[0,1,2,10,12,14,4,6,2];
array.sort();
//↑方法执行后,array的值为[0,1,2,2,4,6,10,12,14]
array.sort('-');
//↑方法执行后,array的值为[14,12,10,6,4,2,2,1,0]
array.sort('a');
//↑方法执行后,array的值为[0,1,10,12,14,2,2,4,6]

vararray=["hoge","foo","bar","baz"];
array.sort();
//↑方法执行后,array的值为["bar","baz","foo","hoge"]

vararray=["abcd","abc","ab","a","b","c"];
array.sort(function(a,b){returna<b;});
//↑以上表达式和指定'+'相同

vararray=["abcd","abc","ab","a","b","c"];
array.sort(function(a,b){returna.length<b.length;});
//↑按照字符串的长短顺序,短的在前。
//(由于是不稳定排序,长度相同的元素例如"a""b""c"在排序后不保证还是"a""b""c"的顺序)

vararray=["abcd","abc","ab","a","b","c"];
array.sort(function(a,b){returna.length<b.length;},true);
//↑按照字符串的长短顺序,短的在前。
//(稳定排序,长度相同的元素例如"a""b""c"在排序后也保持相同的顺序)

saveStruct

 saveStruct 可以将数组结构化后的结果输出到文件。

语法:save(<文件名>,<模式=''>)


 saveStruct 方法用可复原的方式将元素的数据和状态输出到文件。
 被输出的元素包括字符串、实数、字节串、整数类型。此外,元素中包含 Array 类或者 Dictionary 类的时候,对象的内容也将被输出到文件。此外的元素将被作为 void 对象输出。
 例如:

例:
([1,2,3,[4,5],%[a:1,b:2],"字符串"]).saveStruct("out.txt");


 则将被存为内容类似于

[
int1,
int2,
int3,
[
int4,
int5
],
%[
"a"=>int1,
"b"=>int2
],
string"字符串"
]


 这样的文件。这样只需要把这个文件整体作为一个表达式求值,就可以恢复到与保存时相同的结构。
 saveStruct 方法返回 Array 类对象自身。

assign

 assign 方法可以对数组进行复制操作。

语法:assign(<源数组>)


 把参数指定的其他数组的内容,原原本本的复制到调用该方法的数组中。

 将字典(Dictionary类型的对象)作为复制的源数组时,该字典中的各个成员将按照成对的名称、值的顺序交错地放入数组中。字典成员在数组中的顺序不定。

assignStruct

 assignStruct 方法可以对数组连同结构进行复制操作。

语法:assignStruct(<源数组>)


 把参数指定的其他数组的内容,原原本本的复制到调用该方法的数组中。
 和 assign 方法不同,如果成员中存在数组或者字典数组的时候,将用递归的方法将其内容也复制到执行操作的数组中
( assign 方法则只会复制对成员对象的引用 )。

clear

 clear 方法可以将数组的所有元素删除。

erase

 erase 方法可以删除用户给出的索引所指定的元素。

语法:erase(<索引>)


 本方法将删除索引所指定位置的对象。该索引之后的所有元素将会向前移动一个位置,保持数组紧凑。当索引超过数组大小的时候将发生例外。
 (注:本方法不会对元素指向的对象本身进行删除操作,如果环境中还存在其他对这个对象的引用则这个对象将被保留。)

remove

 remove 方法将会删除和指定的值相等的元素。

语法:remove(<值>,<是否全部删除=true>)


 将指定的值与数组中的各个元素进行类型识别比较 ( === 运算符的操作 ),并删除与指定值一致的元素。
 当参数“是否全部删除”为 false 时,则只删除第一个匹配的元素。否则所有满足条件的元素都将被删除。
 (注:本方法不会对元素指向的对象本身进行删除操作,如果环境中还存在其他对这个对象的引用则这个对象将被保留。)

insert

 insert 方法将把指定的值插入到指定的位置上。

语法:insert(<位置>,<值>)


 在“位置”参数所指向的索引位置上,插入参数“值”所给定的元素。该位置之后的元素都将向后移动一个位置。

add

 add 方法将把指定的值追加到数组的最后。

语法:add(<值>)


 本方法在数组的最后追加指定的值,并返回这个值被追加的位置。

find

 find 方法将返回指定的值最初出现位置的索引。

语法:find(<值>,<搜索开始位置=0>)


 从参数“搜索开始位置”的位置开始搜索指定的值,并返回最初找到这个值的位置的索引。如果没有找到指定值的时候将返回 -1 。
 比较操作使用类型识别比较 ( === 运算符的操作 ) 。