他虽疯,但却有他的一套理论。
———威廉-莎士比亚
Array
array.concat(item..)concat
方法产生一个新数组,包含一份array数组的浅复制(shallow copy)并把一个或多个参数item附加在其后。如果item是数组,它的每个元素会被分别添加。
array.join(separator)join
方法把一个array构造成一个字符串。它先把array中每一个元素构造成一个字符串,接着用一个separator分隔符把它们连接在一起。默认separator是逗号“,”。
array.pop()和array.push(item…)pop
和push
方法使得数组像堆栈一样工作。
push(item…)如果item是数组,则它会把参数数组作为单个元素整个添加到数组中。
1 | //pop可以这样实现 |
array.shift()shift
方法移除数组array中的第一个元素并返回该元素。如果这个数组为空,它会返回undefined
。shift通常比pop慢得多。
1 | Array.method('shift',function(){ |
array.slice(start,end)slice
方法对array中的一段做浅复制。首先复制array[start]
,一直复制到array[end]
为止。“前包后不包”。end参数可选,默认值是该数组长度。
如果两个参数中的任何一个是负数,array.length
会和它们相加,试图让他们成为非负数。
如果start
>=array.length
,得到的结果将是一个新的空数组。
array.sort(comparefn)sort
方法对array中的内容进行排序,但不能正确的给一组数字排序,因为默认的比较函数会把要被排序的元素视为字符串。
但可以使用自己的比较函数作为参数替代默认比较函数。下面是给任何包含简单值的数组排序:
1 | var m=['aa','bb','a',4,8,15,16,23,43]; |
我们可以编写一个构造更智能的比较函数的函数,来满足一般情况。
1 | //by函数接受一个成员名字符串作为参数 |
sort
方法是不稳定的,不建议链式调用sort
方法。
array.splice(start,deleteCount,item…)splice
方法从array中移除一个或多个元素,并用新的item替换它们。它返回一个包含被移除元素的数组。
参数start
代表开始位置,deleteCount
代表被移除的元素个数,可以为0,item
会插入到被移除元素的位置。splice
可在像这样实现:
1 | Array.method('splice',function(start,deleteCount){ |
array.unshift(item…)unshift
把元素添加到数组开始部分。返回array的新length。
可以这样实现:
1 | Array.method('unshift',function(){ |
Number
number.toExponential(fractionDigits)toExponential
方法把这个number转换成一个指数形式的字符串。可选参数控制小数点位数。参数值必须在0-20中。
number.toFixed(fractionDigits)toFixed
方法把这个number转换成十进制数形式的字符串。可选参数控制小数点位数。参数必须在0-20中。
number.toPrecision(precision)toPrecision
方法把这个number转换成十进制数形式的字符串。可选参数控制小数点位数。参数必须在0-21中。
RegExp
regexp.exec(string)exec
方法如果成功的匹配regexp和字符串string,它会返回一个数组。数组下标为0的元素将包含regexp匹配的子字符串。下标为1的元素是分组1捕获的文本,以此类推。
如果regexp带有g
标识,会改变regexp.lastIndex
的值。
regexp.test(string)
如果regexp匹配string,就返回true,否则返回false。不要对这个方式使用g
标识。
String
string.charAt(pos)
可以这样实现:
1 | String.method('string',function(){ |
string.match(regexp)match
方法让字符串和一个正则表达式匹配。它依据g
标识来决定如何进行匹配。
如果没有g
标识,那么调用string.match(regexp)
的结果与调用regexp.exec(string)
相同。
如果带有g
标识,那么它生产一个包含所有匹配(无捕获分组)的数组。
string.replace(searchValue,replaceValue)replace
方法对string进行查找和替换操作,并返回一个新的字符串。searchValue
可以是字符串或正则表达式,replaceValue
可以是字符串或函数。
如果replaceValue
是字符,字符$
有特别的含义。
如果replaceValue
是函数,那么每遇到一次匹配,函数就会调用一次,该函数返回的字符串会被用做替换文本。传递给这个函数第1个参数是整个被匹配的文本,第2个参数是分组1捕获的文本,以此来类推。
1 | String.method('entityify',function(){ |
string.search(regexp)
与indexOf
类似,但它只接受一个正则表达式对象作为参数。忽略g
标识,没有position参数。
string.slice()
和array.slice
很像,都是复制再截取构造一个新实例。两个参数若为负数,则与length相加,或者从末位往前数(从1计数)。前包后不包。
string.split(separator,limit)split
方法把string分割成片段来创建一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是字符串或者正则表达式。此方法会忽略g
标识。
注意:来自分组捕获的文本会被包含在被分割后的数组中
1 | var text='last,first,middle'; |