new Array(); new Array(size); new Array(e1,e2,....,e); [e1,e2,...,e];
var a = [1,2,3]; a.concat(4,5); //[1, 2, 3, 4, 5]slice(start,end) 从某个已有的数组返回选定的元素
var a = [1,2,3,4,5]; a.slice(1,3); //[2, 3]2. 原数组改变
[1,2,3].shift(); //1pop() 删除并返回数组的最后一个元素
[1,2,3].pop(); //3push() 向数组的末尾添加一个或更多元素,并返回新的长度。
[1,2,3].push(1); //4reverse() 颠倒数组中元素的顺序。
var a = [1,2,3]; a.reverse(); //[3, 2, 1]sort() 对数组的元素进行排序
var a = [1,2,3,4,5]; a.sort(function(a,b){ return b-a; }) //[5, 4, 3, 2, 1]splice(index,howmany,item1,.....,itemX) 删除元素,并向数组添加新元素,返回被删除的项。
var a = [1,2,3]; a.splice(1,2,'a','b','c'); //[2, 3] a; //[1, "a", "b", "c"]
var a = [1,2,3]; a.splice(1,0,['a','b']); //[] 0不会删除 a; //[1, Array[2], 2, 3]unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
var a = [1,2,3]; a.unshift('a','b'); //53. 其他
[1,2,3].join(); //"1,2,3" [1,2,3].join(",!~");//"1,!~2,!~3"valueOf() 返回数组对象的原始值
var a = [1,2,3]; a.valueOf(); //[1,2,3]
1. 构建字符串的最优方法
当你需要遍历数组或对象的时候,不要总想着“for”语句,要有创造性,总能找到更好的办法:
var arr = ['item 1', 'item 2', 'item 3', ...]; var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';2. 找出元素 item 在给定数组 arr 中的位置
function indexOf(arr, item) { return [].indexOf.call(arr,item) } indexOf([ 1, 2, 3, 4 ], 3)3. 计算给定数组 arr 中所有元素的总和
function sum(arr) { return arr.reduce(function(pre,cur,ind,arr){ return pre+cur; }) } sum([ 1, 2, 3, 4 ])4. 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
function remove(arr, item) { return arr.filter(function(value, index, arr) { if (value === item) { return false } return true }) } remove([1, 2, 3, 4, 2], 2)5. 移除数组 arr 中的所有值与 item 相等的元素,请直接在给定的 arr 数组上进行操作
function removeWithoutCopy(arr, item) { var j = 0; for(var i = 0, l = arr.length; i < l; i ++){ if(arr[i] != item){ arr[j++] = arr[i]; } } arr.length = j; return arr; } removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)6. 在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
function append(arr, item) { return arr.concat([item]); }7. 删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
function curtail(arr) { return arr.slice(1); } curtail([1, 2, 3, 4])8. 删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
function truncate(arr) { return arr.slice(0,arr.length-1); } truncate([1, 2, 3, 4])9. 在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
function prepend(arr, item) { return [item].concat(arr); } prepend([1, 2, 3, 4], 10)10. 统计数组 arr 中值等于 item 的元素出现的次数
function count(arr, item) { var res; return (res = arr.toString().match(new RegExp("\\b"+item+"\\b","g"))) ? res.length : 0; } count([1, 2, 4, 4, 3, 4, 3], 4)11 找出数组 arr 中重复出现过的元素
function duplicates(arr) { var ary = arr.sort(); var len = arr.length; var res = []; for(var i=0;i<len;i++){ if(ary[i-1]===ary[i] && ary[i]!=ary[i+1]){ res.push(ary[i]); } } return res; } duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3])12. 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
function square(arr) { return arr.map(function(x) {return x*x}); } square([1, 2, 3, 4])