toArray
toArray() -> [character...]
将字符串拆分为字符数组。
样例
'a'.toArray();
// -> ['a']
'hello world!'.toArray();
// -> ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
isArray [1.6]
isArray(obj) -> Boolean
如果 obj 是一个数组,返回 true,否则返回 false。
样例
Object.isArray([]); //-> true
Object.isArray($w()); //-> true
Object.isArray({ }); //-> false
toArray
toArray() -> Array
将 Enumerable 表示为 Array。别名 entries。
注意:该方法使得 $A 工具函数在混入了 Enumerable 的任何一个对象上均可正常执行。
样例
$R(1, 5).toArray()
// -> [1, 2, 3, 4, 5]
性能参考
显然,混入 Enumerable 的对象可以重写缺省的代码,就像 Array.toArray 一样。
without(value...) -> newArray
返回不包括参数中任意一个指定值的数组版本。(即返回的数组中不包括任何一个参数中指定的值)
样例
[3, 5, 6, 1, 20].without(3)
// -> [5, 6, 1, 20]
[3, 5, 6, 1, 20].without(20, 6)
// -> [3, 5, 1]
uniq() -> newArray
返回去除数组重复元素后的版本。如果没有重复的元素,返回原始数组本身。
样例
['Sam', 'Justin', 'Andrew', 'Dan', 'Sam'].uniq();
// -> ['Sam', 'Justin', 'Andrew', 'Dan']
['Prototype', 'prototype'].uniq();
// -> ['Prototype', 'prototype'] 因为字符串比较是区分大小写的
性能考虑
对于具有重复元素的大数组,该方法有巨大的潜在性能开销。
因为它不要求数组已排序,所以它的复杂度为 O(n^2)
因为该方法代码中使用了 JavaScript 的 Array.concat 方法,所以在遇到一个新值(不在已有的结果数组中的值)时, 会产生一个新的临时数组用于暂存中间结果。
可以设...
toJSON() -> String返回一个 JSON 字符串。
样例
['a', {b: null}].toJSON();
//-> '["a", {"b": null}]'
toArray() -> newArray
这个方法针对因混入 Enumerable 而引入的 toArray 方法进行了本地优化。
该方法是 clone 的别名操作,它避免了 Enumerable 中 toArray 方法默认的迭代行为。
size() -> Number
返回数组的元素个数。
这个方法针对因混入 Enumerable 模块而引入的 size 方法进行了优化,它调用数组原生的 length 属性,从而避免对数组进行复制操作。
译注:
Array.size 的代码:return this.length;
Enumerable.size 的代码:return this.toArray().length;
reverse([inline = true]) -> Array
返回数组的逆序版本,默认情形下,直接在原始数组内部进行序列调整,如果 inline 设置为 false,则首先克隆原始数组,然后在克隆版本中进行调整。
样例
var nums = [3, 5, 6, 1, 20];
nums.reverse(false)
// -> [20, 1, 6, 5, 3]
nums
// -> [3, 5, 6, 1, 20]
nums.reverse()
// -> [20, 1, 6, 5, 3]
nums
// -> [20, 1, 6, 5, 3]
...
reduce() -> Array | singleValue简化数组:只具有一个元素的数组被转换为那个唯一的元素,包含多个元素的数组返回其本身。
样例
[3].reduce();
// -> 3
[3, 5].reduce();
// -> [3, 5]
() -> value返回数组中最后一个元素,若数组为空,返回 undefined。
样例
['Ruby', 'Php', 'Python'].last()
// -> 'Python'
[].last()
// -> undefined
inspect() -> String返回一个数组的字符串表示形式,用于调试。
译注:该方法返回一个类似于创建数组的代码的字符串表现形式。如 "['a', ['b', [Object Object]], 'c']",更详细的信息请参阅代码。
关于 inspect 方法的更多信息,请查看 Object.inspect。
样例
['Apples', {good: 'yes', bad: 'no'}, 3, 34].inspect()
// -> "['Apples', [object Object], 3, 34]" 提示
如果想要将一个数组的字符串元素简单的连接起来,请使用原生的 join 方法。
['apples', 'bananas', 'kiwis'].join(', ')
// -> 'apples, bananas, kiwis'...
indexOf(value) -> position返回数组中与参数匹配的第一个元素的位置,如果不存在匹配的元素,返回 -1。
注意:这个方法使用 == 操作符来进行元素比较,而不是 === 严格相等操作符。下面的例子说明了这一点。
小提示:这个方法使用简单的原始索引(Javascript 原生数组的索引)来进行遍历,因此不存在因扩展原生 Array 对象而引发异常的风险。
样例
[3, 5, 6, 1, 20].indexOf(1)
// -> 3
[3, 5, 6, 1, 20].indexOf(90)
// -> -1
[0, false, 15].indexOf(false)
// -> 0(注意:是 0 而不是 1,因为 0 == false!)...
Array.from(iterable) -> actualArray克隆一个已有的数组或者根据一个类似于数组的集合创建新的数组。
$A() 工具函数的另一个称谓。完整的描述和样例请参照 $A 的文档。
flatten() -> newArray返回一个不具有嵌套层次结构的数组,内嵌的数组递归加入到最外层数组中。当处理递归集合算法时,这个方法被证明是非常有用的。
样例
['frank', ['bob', 'lisa'], ['jill', ['tom', 'sally']]].flatten()
// -> ['frank', 'bob', 'lisa', 'jill', 'tom', 'sally']
first() -> value返回数组中第一个元素,若数组为空,返回 undefined。
样例
['Ruby', 'Php', 'Python'].first()
// -> 'Ruby'
[].first()
// -> undefined