总结下js中数组和字符串的常用方法。有几个方法总是记混,没办法,英语差,而且对于返回值和是否改变原数组也一直掌握不牢。
Array
array.concat(item…)
concant方法产生一个新数组,它包含一份array的浅复制(shallow copy)并把一个或多个参数item附加在其后。如果item是一个数组,那么它的每个元素会被分别添加。
1 | var a = ['a','b','c']; |
array.join(separator)
join方法把一个array构造成一个字符串——就是数组转字符串。它先把array中的每个元素构造成一个字符串,接着用一个separator分隔符把它们链接在一起。默认的separator是逗号’,’。要想做到无间隔的链接,可以使用空字符串作为separator。
1 | var a = ['a','b','c']; |
array.pop()
pop和push方法使得array可以像堆栈(stack)一样工作。pop方法移除array中的最后一个元素并返回改元素。如果array是empty,则返回undefined。
1 | var a = ['a','b','c']; |
pop可以像这样实现:
1 | Array.method('pop', function() { |
array.push(item…)
push方法把一个或多个参数item附加到一个数组的尾部。和concat方法不同的是,它会修改array,如果参数item是一个数组,它会把参数数组作为单个元素整个添加到数组中,并返回整个array的新长度值。
1 | var a = ['a','b','c']; |
push可以像这样实现:
1 | Array.method('push', function() { |
array.reverse()
reverse方法反转array里的元素的顺序,并返回array本身:
1 | var a = ['a','b','c']; |
array.shift()
shift方法移除数组array中的第一个元素并返回该元素。如果这个数组array是空的,它会返回undefined。shift通常比pop慢的多:
1 | var a = ['a','b','c']; |
shift可以这样实现:
1 | Array.method('shift', function() { |
array.unshift(item…)
unshift方法像push方法一样,用于把元素添加到数组中。但它是吧item插入到array的开始。返回array新的length:
1 | var a = ['a','b','c']; |
unshift可以这样实现:
1 | Array.method('unshift', function () { |
array.slice(start, end)
slice方法对array中的一段做浅复制。首先复制array[start],一直复制到array[end]为止。end参数是可选的,默认值为该数组的长度array.length。如果两个参数中的任何一个是负数,array.length会和他们相加,试图让它们成为非负数。如果start大于等于array.length,得到的结果将是一个新的空数组。
注意:千万别把slice和splice弄混了。字符串中也有一个同名方法:string.slice()
1 | var a = ['a','b','c']; |
array.splice(start, deleteCount, item…)
splice方法从array中移除一个或多个元素,并用新的item替换它们。start是从array中移除元素的开始位置。deleteCount是要移除的元素个数。它返回一个包含被移除元素的数组。
splice的最主要用处是从一个数组中删除元素。千万不要和slice弄混了
1 | var a = ['a','b','c']; |
array.sort(comparefn)
sort方法对array中的内容进行排序。这货还是少用为妙。
String
string.charAt(pos)
charAt方法返回在string中pos位置处的字符。如果pos小于0或者大于等于字符串的长度string.length,则返回空字符串。
1 | var name = 'Curly'; |
string.charCodeAt(pos)
与charAty一样,不过返回的是字符码位。如果pos小于0或者大于等于字符串长度,则返回NaN。1
2
3var name = 'Curly';
var initial = name.charCodeAt(0);
//initial是67
string.concat(item…)
链接两个字符串,没什么鸟用。直接用’+‘省时省力。
string.indexOf(searchString, position)
indexOf方法在string内查找另一个字符串searchString。如果被找到,返回第一个匹配字符的位置,否则返回-1。可选参数position可设置从string的某个指定的位置开始查找:
1 | var text = 'Mississippi'; |
string.lastIndexOf(searchString, position)
lastIndexOf方法和indexOf方法类似,只不过是从该字符串的末尾开始查找:
1 | var text = 'Mississippi'; |
string.slice(start, end)
slice方法复制string的一部分来构造一个新的字符串。如果start参数是负数,它将与string。length相加。end是可选的,默认值为string.length。如果end参数是负数,那么它将与string.length相加。end参数等于你要取得最后一个字符的位置值加上1.
1 | var text = 'and in it he says "Any damn fool could"'; |
string.substring(start, end)
与slice方法一样。没有任何理由使用它,直接用slice。
string.toLowerCase() && string.toUpperCase()
没啥可说的,返回一个新的字符串,实现大小写转换
string.split(separator, limit)
split方法把string分割成片段来创建一个字符串数组——字符串转数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。
如果separator是一个空字符,会返回一个单字符的数组:
1 | var digits = '0123456789'; |
否则,此方法会在string中查找所有separator出现的地方,分隔符两边的两个单元文本会被复制到改数组中。此方法忽略g标识:
1 | var ip = '192.168.1.0'; |
当sparator时一个正则表达式时,现代浏览器会在输出的数组中排除掉空字符串:
1 | var f = '|a|b|c|'.split(/\|/); |
array和string常用方法就先总结到这里。当然有没列出来的方法,不过工作中很少用。string中有关regExp的方法一律没写,那些还是拖到正则表达式的有关文章里再写吧(围笑。
参考书籍:《JavaScript语言精粹》,JavaScript:The Good Parts,作者: Douglas Crockford