JS数组排序方法:
ECMAscript已提供两个重排序方法:reverse()和sort();
reverse()方法会反转数组的顺序;
例:var arr=[1,5,3,12,4];
arr.reverse()返回[4,12,3,5,1]
sort()方法是先将数组中的每一项调用toString()转型方法,然后比较得到的字符串,则比较数字数组时会出现与预期想得到的结果不同;
如var arr=[0,1,5,10,15];
arr.sort()=[0,1,10,15,5];
所以一般要再写个方法处理下这种情况:
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
arr.sort(compare)则得到想要的结果。
或者:
function compare(value1;value2){
return value2-value1;
}
以上两个方法是升序排列的方法,调整value1和value2的位置,则降序排列。
JS数组栈方法:
栈是一种LIFO(后进先出)的数据结构,栈中项的插入和移除只发生在栈顶。
ECMAscript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。
push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。
pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
JS数组队列方法:
队列数据结构的访问规则是FIFO(先进先出)。队列在列表的末端添加项,从列表的前端移除项。
ECMAscript为数组专门提供了shift()和push()方法,以便实现类似队列的行为。
shift()方法从数组前端移除第一项,减少数组的length值,然后返回移除的项。
ECMAscript还为数组提供了一个unshift()方法,与shift()方法用途相反。
unshift()和pop()结合可以从相反的方向来模拟队列。
数组操作:
join():
该方法只接受一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。
例:var colors=["red","yellow","blue"];
alert(colors.join("-")); //red-yellow-blue
concat():
该方法可以基于当前数组中的所有项创建一个新数组。
例:var colors=["red","yellow","blue"];
var colors2=colors.concat("pink",["black","brown"]);
alert(colors); //red,yellow,blue
alert(colors2) //red,yellow,blue,pink,black,brown
slice():
它能够基于当前数组中的一个或多个项创建一个新数组。
slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。
在只有一个参数的情况下,该方法返回从该参数指定位置开始到当前数组末尾的所有项。
如果两个参数,则返回从第一个参数位置开始到第二个参数结束但不包括第二个参数位置项的所有项(包头不包尾)。
例:var nums=[0,1,2,3,4,5];
var nums1=nums.slice(1);
var nums2=nums.slice(1,4);
alert(nums1); //1,2,3,4,5
alert(nums2); //1,2,3
splice():
这个方法恐怕是JS中最强大的数组方法了,灵活运用可以在数组任意位置删除、插入、替换数据项。
删除:指定两个参数:要删除的起始项位置和结束项位置(包头不包尾)。
例:splice(0,2)会删除数组中的前两项。
插入:可以向指定位置插入任意数量的项,只需提供三个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。
例:splice(2,0,"red","green")会从当前数组位置2开始插入字符串"red"和"green"。
替换:可以向指定位置插入任意数量的项,且可以删除任意数量的项。
例:splice(2,1,"red","green")会删除当前数组位置2的项,然后再从位置2开始插入字符串"red"和"green".
总结splice();
即该方法前两个参数一定要,第一个参数是起始位置,第二个参数是要删除的项数,后面的参数即从起始位置插入的项。
位置方法:
indexOf()和lastIndexOf();
这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。
indexOf()方法从数组的开头开始向后查找,lastIndexOf()方法从数组的末尾开始向前查找。
都返回要查找项在数组中的位置,或者没找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符(除了比较值还要比较数据类型)。