编程语言学多了,难免会有各种定义混淆的时候,尤其是对于一系列函数名相近的方法。
JS中对于数组和字符串的操作,博主使用slice,splice,split,substring,substr常常都需要从新查找一下再使用,今天就尝试将它做个小结,巩固下记忆。
1.Array.slice(startIndex,endIndex)
String.slice(startIndex,endIndex)
[starIndex,endIndex)
从索引为1的元素开始取,取到索引为三的元素,并不包含索引为三的这个元素 所以实际取到的索引位置为endIndex - 1;
var array = [0,1,2,3,4,5,6,7];
var str = "Hello World, Hello Kingsley, Hello JavaScript !";
var arr = array.slice(1,3);// arr = [1,2];
var subStr = str.slice(6,11);//subStr = "World";
从第三个元素开始往后取出剩余的所有元素
var array = [0,1,2,3,4,5,6,7];
var str = "Hello World, Hello Kingsley, Hello JavaScript !";
var arr = array.slice(3);//arr = [3,4,5,6,7];
var subStr = str.slice(6);//subStr = "World, Hello Kingsley, Hello JavaScript !";
大于数组/字符串长度,返回空
var array = [0,1,2,3,4,5,6,7];
var str = "Hello World, Hello Kingsley, Hello JavaScript !";
var arr = array.slice(10);//arr = [];
var subStr = str.slice(100);//subStr = "";
负值情况下 将这个元素与数组/字符串长度length相加,得出的正值(小于数组/字符串长度)为起始索引 并从起始索引开始取出剩下的所有元素
var array = [0,1,2,3,4,5,6,7];
var str = "Hello World, Hello Kingsley, Hello JavaScript !";
var arr = array.slice(-6);//arr =[2,3,4,5,6,7];
var subStr = str.slice(-5);//subStr = "ipt !";
负值情况下 大于数组/字符串长度,则返回整个数组
var array = [0,1,2,3,4,5,6,7];
var str = "Hello World, Hello Kingsley, Hello JavaScript !";
var arr = array.slice(-10);//arr =[0,1,2,3,4,5,6,7];
var subStr = str.slice(-100);//subStr = "Hello World, Hello Kingsley, Hello JavaScript !";
Array.prototype.slice.call(arguments)
arguments 是一个类数组对象,使用Array.prototype.slice.call(arguments)
将参数分开返回为数组
一个累加的函数
function add(){
var args = Array.prototype.slice.call(arguments);
var fn = function(){
var args_fn = Array.prototype.slice.call(arguments);
return add.apply(null,args.concat(args_fn));
}
fn.toString = function(){
return args.reduce(function(a,b){
return a+b;
})
}
return fn;
}
alert(add(1));//1
alert(add(1,2)(3));//6
alert(add(1,3)(4,3)(5));//16
2.splice(startIndex,deleteCount,item,item...)
从指定的位置删除几个元素,同时将需要的元素插入,并返回包含被删除的元素的新数组。
var person =["Kingsley","Clara","Sally","Jobs"];
var arr = person.splice(1,2,"Jimmy","Paul");
alert(person);//person = [Kingsley,Jimmy,Paul,Jobs];
alert(arr);//arr = [Clara,Sally];
从第一个元素往后取出所有元素,并返回新数组,同时源数组改变。
var person =["Kingsley","Clara","Sally","Jobs"];
var arr = person.splice(1);
alert(person);//person = [Kingsley];
alert(arr);//arr = ["Clara","Sally","Jobs"];
负数情况,且大于数组length,返回源数组整个数组成新数组,同时源数组改变
var person =["Kingsley","Clara","Sally","Jobs"];
var arr = person.splice(-5);
alert(person);//person = [];
alert(arr);//arr = ["Kingsley","Clara","Sally","Jobs"];
将这个数与数组长度length相加,得出的值为起始索引 并从起始索引开始取出剩下的所有元素。
var person =["Kingsley","Clara","Sally","Jobs"];
var arr = person.splice(-1);
alert(person);//person = [Kingsley,Clara,Sally];
alert(arr);//arr = ["Jobs"];
大于数组长度 返回空
var person =["Kingsley","Clara","Sally","Jobs"];
var arr = person.splice(10);
alert(person);//person = ["Kingsley","Clara","Sally","Jobs"];
alert(arr);//arr = [];
3.String.splict(separator,limit)
以标识符分割并返回包含元素的数组
var str = "abcdefg";
var subStrArr = str.split("",3);
alert(subStrArr);//subStrArr = [a,b,c];
不作限制,则返回所有符合元素
var str = "abcdefg";
var subStrArr = str.split("");
alert(subStrArr);//subStrArr = [a,b,c,d,e,f,g];
4.String.substring(startIndex,endIndex)
[startIndex,endIndex)
var str = "abcdefg";
var subStr = str.substring(1,3);
alert(subStr);//subStr = "bc";
5.String.substr(startIndex,length)
var str = "abcdefg";
var subStr = str.substr(1,3);
alert(subStr);//subStr = "bcd";
小生才疏学浅,如有不对的地方,请各位客官指出,共同学习!