数组切片,检索方法对比
substr,substring,slice区别
一,作用
切片,从原字符串中取新字符串的方法,通俗点就是用来截取字符串。
二,相同点
都接收一到二个参数。
当接收一个参数是,都表示截取从当前下标,截取字符串,知道字符串的最后一个字符。
var str = 'hello world';
console.log(str.slice(3),str.substr(3),str.substring(3));
//'lo world','lo world','lo world'
三,不同点
1,当接收二个参数时,第一个参数都表示当前的下标,slice和substring的第二个参数表示截取的结束下标,而substr表示的是需要截取的字符串的位数。
console.log(str.slice(3,5),str.substr(3,5),str.substring(3,5)); //'lo','lo wo','lo'
2,当传入的是负数时
slice()会把当前的负值加上字符串的长度。如slice(-3),相当于slice(8)。
substring()会把所有的负值转化为零。
substr()第一个负值负值会把当前的负值加上字符串的长度,第二个负值会转化为零(截取的个数不能为负)。
indexOf与search的区别
检索可返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到返回-1。
search()的参数可以是正则表达式,而indexOf()的参数只是普通的字符串。indexOf()是比search()更加底层的方法。
如果只是兑一个具体字符串来茶渣检索,那么使用indexOf()的系统资源消耗更小,效率更高;如果查找具有某些特征的字符串(例如查找以a开头,后面是数字的字符串),那么indexOf()就无能为力,必须要使用正则表达式和search()方法了。
大多是时候用indexOf()不是为了真的想知道子字符串的位置,而是想知道长字符串中有没有包含这个子字符串。若果返回索引为-1,那么说明没有,反之则有。
every和some的区别
- every是所有函数的每个回调都返回true的时候才会返回true,当遇到false的时候终止执行,返回false。
- some函数是存在有一个函数返回true的时候终止执行并返回true,否则返回false。
// every var arr = [1,6,8,-2,-5,7,-4] var isPositive = arr.every(function(value){ return value > 0; }) console.log(isPositive) // false //some var arr = [1,6,8,-2,-5,7,-4] var isPositive = arr.some(function(value){ return value > 0; }) console.log(isPositive) // true