Array 类
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 。
比较操作使用类型识别比较 ( === 运算符的操作 ) 。