Array 类是处理
数组的类型。
可以通过创建这个类的实例,并在间接成员选择运算符([ ])中传递指定的索引的方式将这个类作为数组使用。索引为整数,0表示数组中的第一个元素,1表示第二个对象,依此类推。如果指定负数作为索引,则将被当作从数组的最后开始指定元素。 (-1 表示最后的对象)。
例:
var a = new Array();
var i;
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
类型对象。
load 方法,可以从文件中读取数据。
语法 : load(<文件名>, <模式=''>)
本方法将从文本文件读取数组数据,将文本文件中的文本按行作为元素放入数组,最终count属性将和文件的行数相等。
模式参数可以用一个字符串指定读取文件时的模式。模式的含义将随着TJS运行的环境有所不同。如果在 "o" 之后写入一个十进制偏移量,则将从与这个数值相等个字节后的位置开始读取。
随着 TJS 运行环境的不同,可能存在本方法和 save 方法、 saveStruct 方法无法使用的情况。
load 方法将返回这个 Array 类对象自身。
save 方法可以向文件写入数据。
语法 : save(<文件名>, <模式=''>)
本方法将数组写入文件。本方法基本上是一行一个元素顺序记录各个元素数据,但遇到对象和类、函数等类型的数据,文件中对应的位置将是空行。
模式参数可以用一个字符串指定写入文件时的模式。模式的含义将随着TJS运行的环境有所不同,对于吉里吉里来说,指定 "c" 则将对文件进行简单的加密( 可以使用 load 方法读取 ),指定 "z" 则将把文件压缩保存( 无法与 "c" 共用,该模式保存的数据也可以直接用 load 方法读取 )。如果在 "o" 之后写入一个十进制偏移量,则将从与这个数值相等个字节后的位置开始写入。
save 方法将返回这个 Array 类对象自身。
split 方法可以对字符串进行分割。
语法 : split(<模式/分隔符集合>, <字符串>, <(保留)>, <是否忽略空的元素=false>)
初始化数组,并用模式字符串或分隔符分割字符串,将结果复制到数组中。
需要在第一个参数中指定模式或者分隔符集合。
需要使用模式匹配时,请传入相关的正则表达式对象。
需要使用分隔符集合时,请传入需要被识别为分隔符的字符。如果传入字符串,则字符串中的各个字符都将被做为分隔符处理。
第三个参数为了将来的版本暂时保留。
参数“是否忽略空的元素”,在不希望把空的元素( 比如说指定逗号为分隔符时的 ,,,,,,, 等 )复制到数组时可以被指定为true。
请注意参数的顺序。
join 方法可以把数组合并为一个字符串。
语法 : join(<分隔符>, <(保留)>, <是否忽略空的元素=false>)
将数组中的各个元素结合,各个元素之间用指定的分隔符分割,并返回合并后的字符串。
参数“是否忽略空的元素”为 true 时,数组元素的void将被忽略。
例:
var ar = [ "a", "b", void, "d" ];
var s1 = ar.join(",");
var s2 = ar.join(",",,true);
reverse 方法可以把数组的元素按照顺序反过来排列。
语法: reverse()
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 ,也就是进行不稳定排序。所谓的“稳定排序”,就是指相等的数组元素的顺序在排序后也相同的排序方法。对于不稳定排序,则不保证相等的元素在排序后和原先的顺序相同。
例:
var array = [ 0, 1, 2, 10, 12, 14, 4, 6, 2 ];
array.sort();
array.sort('-');
array.sort('a');
var array = [ "hoge", "foo" , "bar", "baz" ];
array.sort();
var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
array.sort(function(a,b) { return a< b; } );
var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
array.sort(function(a,b) { return a.length < b.length; } );
var array = [ "abcd", "abc", "ab", "a" , "b", "c" ];
array.sort(function(a,b) { return a.length < b.length; }, true );
saveStruct 可以将数组结构化后的结果输出到文件。
语法 : save(<文件名>, <模式=''>)
saveStruct 方法用可复原的方式将元素的数据和状态输出到文件。
被输出的元素包括字符串、实数、字节串、整数类型。此外,元素中包含 Array 类或者 Dictionary 类的时候,对象的内容也将被输出到文件。此外的元素将被作为 void 对象输出。
例如:
例:
([ 1, 2, 3, [4, 5], %[ a : 1, b : 2 ], "字符串" ]).saveStruct("out.txt");
则将被存为内容类似于
[
int 1,
int 2,
int 3,
[
int 4,
int 5
],
%[
"a" => int 1,
"b" => int 2
],
string "字符串"
]
这样的文件。这样只需要把这个文件整体作为一个表达式求值,就可以恢复到与保存时相同的结构。
saveStruct 方法返回 Array 类对象自身。
assign 方法可以对数组进行复制操作。
语法 : assign(<源数组>)
把参数指定的其他数组的内容,原原本本的复制到调用该方法的数组中。
将字典(Dictionary类型的对象)作为复制的源数组时,该字典中的各个成员将按照成对的名称、值的顺序交错地放入数组中。字典成员在数组中的顺序不定。
assignStruct 方法可以对数组连同结构进行复制操作。
语法 : assignStruct(<源数组>)
把参数指定的其他数组的内容,原原本本的复制到调用该方法的数组中。
和 assign 方法不同,如果成员中存在数组或者字典数组的时候,将用递归的方法将其内容也复制到执行操作的数组中
( assign 方法则只会复制对成员对象的引用 )。
erase 方法可以删除用户给出的索引所指定的元素。
语法 : erase(<索引>)
本方法将删除索引所指定位置的对象。该索引之后的所有元素将会向前移动一个位置,保持数组紧凑。当索引超过数组大小的时候将发生例外。
(注:本方法不会对元素指向的对象本身进行删除操作,如果环境中还存在其他对这个对象的引用则这个对象将被保留。)
remove 方法将会删除和指定的值相等的元素。
语法 : remove(<值>, <是否全部删除=true>)
将指定的值与数组中的各个元素进行类型识别比较 (
=== 运算符的操作 ),并删除与指定值一致的元素。
当参数“是否全部删除”为 false 时,则只删除第一个匹配的元素。否则所有满足条件的元素都将被删除。
(注:本方法不会对元素指向的对象本身进行删除操作,如果环境中还存在其他对这个对象的引用则这个对象将被保留。)
insert 方法将把指定的值插入到指定的位置上。
语法 : insert(<位置>, <值>)
在“位置”参数所指向的索引位置上,插入参数“值”所给定的元素。该位置之后的元素都将向后移动一个位置。
add 方法将把指定的值追加到数组的最后。
语法 : add(<值>)
本方法在数组的最后追加指定的值,并返回这个值被追加的位置。
find 方法将返回指定的值最初出现位置的索引。
语法 : find(<值>, <搜索开始位置=0>)
从参数“搜索开始位置”的位置开始搜索指定的值,并返回最初找到这个值的位置的索引。如果没有找到指定值的时候将返回 -1 。
比较操作使用类型识别比较 ( === 运算符的操作 ) 。