1、join()
join()
要领用于把数组中的一切元素转换为一个字符串。元素是经由过程指定的分开符举行分开的。arrayObject.join(separator)
参数代表分开符,是可选的。如果不传参数,默许逗号。
注重返回值是字符串,不是数组。
注重:该要领不会转变原数组。
var arr = [1, 2, 3, 4, 7, 9, 6];
arr.join(); // "1,2,3,4,7,9,6"
arr.join(" "); // "1 2 3 4 7 9 6"
arr.join(""); //"1234796"
var a = new Array(10); //长度为10的空数组
a.join("*"); //"*********";9个*标记构成的字符串
join()
要领是String.split()
要领的逆向操纵,后者是将字符串分割成若干块来建立一个数组。
2、sort()
sort()
要领用于对数组的元素举行排序并返回排序后的数组。
注重:该要领会转变本来的数组
当不带参数调用时,数组元素根据字母表排序(必要时暂时转换为字符串比较)。
//字母表递次排序
var a = [1, 2, 3, 4, 7, 9, 6];
a.sort() //[1, 2, 3, 4, 6, 7, 9];
//字母表递次排序
var b = [33, 222, 4, 1111, 5555];
b.sort() //[1111, 222, 33, 4, 5555]
//字母表递次排序
var c = ['c', 'ab', 'cd', 'a', 'f'];
c.sort() //["a", "ab", "c", "cd", "f"]
//字母表递次排序,若有大写,大写在前,小写在后
var d = ['a', 'Ah', 'D', 'bcc'];
d.sort() //["Ah", "D", "a", "bcc"]
//如果数组有''元素,它们会排在数组的头部
var e = ['a', 'Ah', 'D', 'bcc', '', ''];
e.sort() //["", "", "Ah", "D", "a", "bcc"]
//如果数组包含undefined元素,它们会排在数组的尾部
为了根据其他体式格局而非字母表递次举行数组排序,必修给
sort()
通报一个比较函数作为参数。该函数决议了它的两个参数在数组中的排序。返回负数,第一个参数在前。反之,返回正数,第一个参数在后。如果返回0,也就是说排序可有可无。
var b = [33, 222, 4, 1111, 5555];
b.sort() //[1111, 222, 33, 4, 5555]; 字母表递次
b.sort(function(a, b) {
return a - b;
}); //[4, 33, 222, 1111, 5555]; 数值递次
var d = ['a', 'Ah', 'D', 'bcc'];
d.sort() //["Ah", "D", "a", "bcc"] 辨别大小写
d.sort(function(f, g) {
var x = f.toLowerCase(); //都转换为小写
var y = g.toLowerCase(); //都转换为小写
if (x < y) return -1;
if (x > y) return 1;
}); //["a", "Ah", "bcc", "D"] 不辨别大小写
注重,这里运用匿名函数表达式异常轻易。既然函数只运用一次,就没必要给它定名了。
3、reverse()
everse() 要领用于倒置数组中元素的递次,返回逆序的数组。
注重:该要领会转变本来的数组
reverse()是sort()的逆序版,reverse()的细致排序行动请拜见上文 sort() 要领的诠释。
var b = [33, 222, 4, 1111, 5555];
b.sort(); //[1111, 222, 33, 4, 5555] 正排序
b.reverse(); //[5555, 1111, 4, 222, 33] 逆排序
4、push()
push() 要领可向数组的末端增加一个或多个元素,并返回新的长度,也就是增加元素后的数组长度。
注重:该要领会转变本来的数组
arrayObject.push(newelement1, newelement2, …., newelementX)
push()
要领起码要有一个参数。push() 要领可把它的参数递次增加到 arrayObject
的尾部。push()
要领和 pop()
要领运用数组供应的先进后出栈的功用。
注重:push()
要领中的参数不论是什么范例(数组、对象等),一个参数将会被作为一个团体元素插进去 arrayObject
的尾部,不做拆分,详见示例。
var a = ["a","b"];
var b = {
name: "Tom"
};
var c = [1,2,3];
console.log(a); // ["a", "b"]
console.log(a.push(b)); //3
console.log(a);
/*["a", "b", [object Object] {
name: "Tom"
}]*/
console.log(a.push(c));
console.log(a); //4
/*["a", "b", [object Object] {
name: "Tom"
}, [1, 2, 3]]*/
5、pop()
pop() 要领用于删除并返回数组的末了一个元素。
注重:该要领会转变本来的数组
pop()
要领将转变数组(删除数组的末了一个元素,把数组长度减 1),而且返回它删除的元素的值。如果数组已为空,则 pop()
不转变数组,并返回 undefined
值。
var arr = ["George", "John", "Thomas"];
console.log(arr.pop()); // "Thomas"
console.log(arr); / /["George", "John"];
console.log(arr.pop()); //"John"
console.log(arr); // ["George"]
console.log(arr.pop()); //"George"
console.log(arr); //[]
console.log(arr.pop()); //undefined
console.log(arr); //[]
6、unshift()
unshift() 要领可向数组的开首增加一个或更多元素,并返回新的长度。
注重:该要领会转变本来的数组
arrayObject.unshift(newelement1, newelement2, …., newelementX)
参数newelement1……X
最少要有一个。unshift()
要领将把它的参数插进去 arrayObject
的头部,并将已存在的元素依次地移到较高的下标处,以便留出空间。该要领的第一个参数将成为数组的新元素 0,如果另有第二个参数,它将成为新的元素 1,以此类推。
在IE6与IE7中,unshift()会返回 underfined!
var arr = ["George", "John", "Thomas"];
console.log(arr.unshift("William")); //4
console.log(arr.unshift("Tom", "Jerry")); //6
console.log(arr); //["Tom", "Jerry", "William", "George", "John", "Thomas"]
7、shift()
shift() 要领用于把数组的第一个元素从个中删除,并返回第一个元素的值。
如果数组是空的,那末 shift() 要领将不举行任何操纵,返回 undefined 值。
注重:该要领会转变本来的数组
var arr = ["George", "John", "Thomas"];
console.log(arr.shift()); //"George"
console.log(arr); //["John", "Thomas"]
console.log(arr.shift()); //"John"
console.log(arr); //["Thomas"]
console.log(arr.shift()); //"Thomas"
console.log(arr); //[]
console.log(arr.shift()); //undefined
8、contact()
concat() 要领用于衔接两个或多个数组。
该要领不会转变现有的数组,而仅仅会返回被衔接数组的一个副本。
注重:参数是必需的。可所以详细的值,也可所以数组对象,可所以恣意多个。如果参数是元素,则拼接元素。如果参数是数组,则拼接数组中的元素,并不是数组自身。
var a = [1,2,3];
var b = a.concat(4,5);
var c = a.concat(4,5,[6,7],8,"123");
console.log(a); //[1, 2, 3]
console.log(b); //[1, 2, 3, 4, 5]
console.log(c); //[1, 2, 3, 4, 5, 6, 7, 8, "123"]
9、slice()
slice()
要领可从已有的数组中返回选定的元素,一个片段或一个子数组。
注重,该要领并不会修正数组,要领会返回一个新的数组,包含从 start 到 end (不包含该元素)的 arrayObject 中的元素。
arrayObject.slice(start, end)
参数start是必需的,划定从那边最先拔取,如果是负数,那末它划定从数组尾部最先算起的位置。也就是说,-1 指末了一个元素,-2 指倒数第二个元素,以此类推。
参数end是可选的,划定从那边完毕拔取,该参数是数组片段完毕处的数组下标。如果没有指定该参数,那末切分的数组包含从 start 到数组完毕的一切元素。如果这个参数是负数,那末它划定的是从数组尾部最先算起的元素。
在运用slice()时,如果参数start超过了数组的出发点,则会从数组头部最先;如果参数end超过了数组的末端,则会从数组的尾部完毕;如果start和end中的局限不在数组中,或许end小于start,则会返回空数组;如果start和end不为数字,则会举行转换,转换失利的话,start默许为0,end默许为0。详见示例:
var arr = ["George", "John", "Thomas", "James", "Adrew", "Martin"];
console.log(arr.slice(2,4)); //["Thomas", "James"]
console.log(arr.slice(-3,4)); //["James"]
console.log(arr.slice(-10,4)); //["George", "John", "Thomas", "James"]
console.log(arr.slice(-10,-4)); //["George", "John"]
console.log(arr.slice(4,3)); //[]
console.log(arr.slice(-20,-10)); //[]
console.log(arr.slice("2","4")); //["Thomas", "James"]
console.log(arr.slice("a","4")); //["George", "John", "Thomas", "James"]
console.log(arr.slice("a","b")); //[]
console.log(arr.slice("2a","4a"));//[]
console.log(arr.slice("","")); //[]
10、splice()
splice()
要领用于插进去、删除或替代数组的元素。
注重:splice()会直接对原数组举行修正。
arrayObject.splice(index, howmany, element1, ….., elementX)
参数index是必需的。划定从那边增加/删除元素,该参数是最先(包含)插进去和(或)删除的数组元素的下标,必需是数字。
参数howmany是必需的。划定应当删除若干元素。必需是数字,但可所以 “0″。如果未划定此参数,则删除从 index 最先到原数组末端的一切元素。
参数element1…elementX是可选的。划定要增加到数组的新元素,从 index 所指的下标处最先插进去。
splice() 要领可删除从 index 处最先的零个或多个元素,而且用参数列表中声明的一个或多个值来替代那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
请注重slice()和splice()的区分:slice
意义是切片,即把数组切出来一段;splice
意义是绞接,如果接两根绳索,需要把本来的绳索切开,然后把新绳索和被切开的旧绳索的两段拼接在一同。如果想删除数组中的一段元素,并向数组增加新元素,应当运用要领Array.splice()
。
注重如果参数index不为数字,则会自动转换,详见示例:
var arr = ["George", "John", "Thomas", "James", "Adrew", "Martin"]
console.log(arr.splice(2, 1)); //["Thomas"]
console.log(arr); //["George", "John", "James", "Adrew", "Martin"]
console.log(arr.splice(2, 2, "William")); //["James", "Adrew"]
console.log(arr); //["George", "John", "William", "Martin"]
console.log(arr.splice(2, 1, "Tom", "Jerry")); //["William"]
console.log(arr); //["George", "John", "Tom", "Jerry", "Martin"]
console.log(arr.splice(2)); //["Tom", "Jerry", "Martin"]
console.log(arr); //["George", "John"]
console.log(arr.splice("2")); //[]
console.log(arr); //["George", "John"]
console.log(arr.splice("a")); //["George", "John"]
console.log(arr); //[]
11、toString()和toLocaleString()
toString()
要领可把数组转换为字符串,并返回效果。
Array.toString()
相当于 Array.join()
,返回值与没有参数的 join()
要领返回的字符串雷同。toLocaleString()
把数组转换为当地字符串。返回值Array
的当地字符串示意。
转变原数组的要领:
pop()、push()、reverse()、shift()、sort()、splice()、unshift()
不转变原数组的要领:
concat()、join()、slice()、toString()、toLocaleString()
注重:JavaScript内里,没有好的机制来区分Array和Object,平常能够经由过程下面的要领来辨认数组:
var isArray = function(value){
return Object.prototype.toString.apply(value) === '[object Array]';
}
Object.prototype.toString
对任何变量会永久返回如许一个字符串“[object, class]”
,而这个class
就是JavaScript
内嵌对象的组织函数的名字。至于用户自定义的变量,则class即是object。
因而经由过程Object.prototype.toString.apply(obj)
能够正确的猎取变量数据范例。
经由过程Object.prototype.toString
能够获得的数据范例包含:Date,Object,String,Number,Boolean,Regexp,Function,undefined,null,Math
等。
ECMAScript 5定义了9个新的数组要领,有时机再写!
以上内容参考:[Feeldesign Studio ](http://www.feeldesignstudio.c…和JavaScript威望指南
感谢寓目,愿望大牛指点,小牛一同提高~