## Array对象 ### 1.构造函数:参数可以定义数组的长度。 ~~~javascript var arr = ["a","b"]; var arr2 = new Array(10); console.log(arr2.length); // 10 ~~~ ### 2.Array.isArray() 判断一个值是否是一个数组,弥补了typeof运算符的不足。 ~~~javascript console.log(typeof arr2); // object console.log(Array.isArray(arr2)); // true ~~~ ### 3.Array实例的方法 `push()`:用于在数组的末端添加一个元素,并返回添加元素后的数组长度。该方法会改变原来的数组。 ~~~javascript var arr = ["a","b"]; arr.push("c"); console.log(arr); // ['a','b','c'] ~~~ `pop()`:删除数组的最后一个元素,并返回该元素。该方法也会改变原来的数组 ~~~ arr.pop(); console.log(arr);//['a','b'] ~~~ `join()`:以参数作为分隔符,将所有数组元素组成一个字符串进行返回,如果不提供参数,默认以逗号分隔。 ~~~javascript console.log(arr.join()); // a,b console.log(arr.join("|")); // a|b ~~~ `concat()`:多个数组的合并。将新数组的成员添加到原数组的尾部,然后返回一个新数组。原数组不变。 如果希望把一个数组进行“浅”复制,可以使用该方法。 ~~~javascript console.log(arr.concat(['c','d','e'])); // ['a','b','c','d','e'] console.log(arr); // ['a','b'] ~~~ `shift()`:删除数组的第一个元素,并返回该元素。该方法会改变原来的数组。 示例 ~~~javascipt var arr4 = [1,2,3,4,5]; console.log(arr4.shift()); // 1 console.log(arr4); // [2,3,4,5] ~~~ `unshift()`:用于在数组的第一个位置添加元素,并返回新数组的数组长度。该方法会改变原来的数组。 ~~~javascript arr4.unshift(1); console.log(arr4) // [1,2,3,4,5] ~~~ `reverse()`:颠倒数组中元素的顺序,返回改变后的数组,会改变原来的数组 示例 ~~~javascript arr4.reverse(); console.log(arr4) // [5,4,3,2,1] ~~~ `slice()`:提取原数组的一部分,返回一个新的数组,原数组不变。 第一个参数是起始位置,第二个参数是终止位置,如果第二个参数不填写,则一直返回到原数组的最后一个成员。 ~~~javascript console.log(arr4.slice(2,4)); // [3,2] console.log(arr4.slice(4)); // [1] console.log(arr4);// [5,4,3,2,1] ~~~ `splice()`:删除原数组的一部分成员,并可以在删除的位置添加新的成员,返回值是被删除的元素,该方法会改变原数组。 第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有参数,表示这些就是要被插入数组的新元素。 ~~~javascript arr4.splice(2,1,'a','b'); console.log(arr4); // [5,4,'a','b',2,1] ~~~ `sort()`:对数组进行排序,默认是按照字典顺序进行排序。排序后原数组将改变。 可以接收一个比较函数作为参数, 如果第一个参数应该位于第二个参数之前,返回负数。 两个参数相等,返回0. 第一个参数应该位于第二个之后,返回正数。 ~~~ var arr5 = [5,3,4,1,2,101,11]; arr5.sort(); console.log(arr5); // 1,101,11,2,3,4,5 arr5.sort(function(a,b){ return a - b; }); console.log(arr5); // 1,2,3,4,5,11,101 var arr6 = [ { name:"Tom", age:22 },{ name:"Jack", age:18 },{ name:"Helen", age:29 } ]; arr6.sort(function(obj1,obj2){ return obj1.age - obj2.age; }); console.log(arr6); // Jack/Tom/Helen ~~~ `filter()`:方法的参数是一个函数,所有成员依次执行该函数,返回结果为true的成员组成一个新的数组返回,该方法不会改变原来的数组。 ~~~javascript var arr7 = [3,4,5,6,7,8,9]; var arr8 = arr7.filter(function(ele){ return ele % 2 == 0 ? true : false; }); console.log(arr8); // 4,6,8 ~~~