1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <script> 9 //数组浅复制:指向的是同一个对象,对象变化时,他们都变化。 10 var numbers = [1,2,3]; 11 var num = numbers; 12 console.log(num); 13 console.log(numbers); 14 numbers[1] = 4; 15 console.log(num[1]); 16 17 //数组深复制:把数组中的每个元素都复制到新数组中 18 function Copy(arr1,arr2){ 19 for(var i=0;i<arr1.length;i++){ 20 arr2[i]=arr1[i]; 21 } 22 return arr2; 23 } 24 25 //数组几个可变方法: unshift() 添加元素到数组开头 push() 添加元素到数组尾 pop()删除最后一个元素 shift() 删除数组第一个元素 26 27 var arr = [1,2,3,4,5]; 28 arr.unshift(6); 29 console.log("unshift",arr); 30 var arr = [1,2,3,4,5]; 31 arr.shift(); 32 console.log("shift",arr); 33 var arr = [1,2,3,4,5]; 34 arr.push(6); 35 console.log("push",arr); 36 37 var arr = [1,2,3,4,5]; 38 arr.pop(); 39 console.log("pop",arr); 40 41 42 43 //数组排序 sort() 和 sort(function) ,reverse(); 44 function compare(num1,num2){ 45 return num1-num2; 46 } 47 var arr = [1,3,100,6,50]; 48 // arr.sort();//这个排序默认以字符串的形式排列 所以数字有误差 可以加个比较函数 实现数字排序。 49 arr.sort(compare); 50 console.log("sortarr",arr); 51 52 arr .reverse(); 53 console.log(arr,"reverse"); 54 55 //返回索引 : indexOf() 和 lastIndexOf() 56 var arr = [1,2,2,3]; 57 console.log(arr.indexOf(2)); 58 console.log(arr.indexOf(4)); // 找不到 返回-1 59 console.log(arr.lastIndexOf(2)); // 返回数组中跟参数相同的所有元素中的最后一个索引。 60 61 //数组字符串表示 join() 和 toString()方法 62 var arr = ['zhangsan','lisi','zhaowu','wangliu']; 63 console.log(arr.join()); 64 console.log(arr.toString()); //返回的结果是一样的,逗号分隔的字符串. 65 66 //数组生成数组 :concat() splice() 67 var arr1 = ['hello','javascript'], 68 arr2 = ['name','class']; 69 console.log(arr1.concat(arr2)); 70 71 var arr = ['hello','this',"is",'splice']; 72 console.log(arr.splice(1,3)); 73 console.log(arr); //切割完 数组就变成剩下的元素组成的数组 74 75 76 //从数组中间位置添加 删除元素 :splice(a,b,value) a :起始索引 b 要截取(删除)的元素个数 value,要添加的元素,可以是多个,依次逗号隔开。 77 var arr= [1,2,3,100,200,4,5]; 78 arr.splice(3,2); 79 console.log(arr); //完成删除 80 81 var arr = [1,2,3,4,5]; 82 arr.splice(3,0,100,200); //插入的值依次逗号隔开 83 console.log(arr); 84 85 86 //迭代器方法 87 //不生成新数组的: forEach(function) 接受一个函数,对每个元素进行迭代, 88 // every(function) 返回一个布尔值,方法作用在每个元素上都返回true,every(function) 才返回true 89 // some(function) 与every(function ) 类似,但只要有一个返回true,some就返回true。 90 // reduce(function) 迭代累加, 也可以连接成字符串, 还可以用 reduceRight(function)方法进行反转 91 92 //forEach(function) 93 var arr = [1,2,3,4,5,6,7,8,9]; 94 function print(num){ 95 console.log(num,num*num); 96 } 97 arr.forEach(print); 98 99 //every(function),some(function) 100 var arr = [4,5,6,7,8,9]; 101 var bool = arr.some(function(num){ 102 // var bool = arr.every(function(num){ 103 console.log(num>5); 104 return num>5 105 }); 106 console.log(bool); 107 108 //reduce(function) 109 var arr = [1,2,3,4]; 110 function add(num1,num2){ 111 return num1 + num2; 112 } 113 console.log(arr.reduce(add)); //10 114 115 116 //生成新数组迭代方法:map(function), filter(function) 117 //map 118 var arr = ["hello","javascript","function"]; 119 function first(value){ 120 return value[0]; 121 } 122 console.log(arr.map(first).join('')); 123 124 //filter:参数函数需要返回布尔值,结果是满足条件的所有元素列表。 相当于过滤器。也可以用来过滤字符串数组。 125 var arr = [1,2,3,4,5,6,7,8]; 126 var res = arr.filter(function(num){ 127 return num >5 128 }) 129 console.log("res",res); //6,7,8 130 131 //获取数组所有key值 132 var arr=new Array(); 133 arr["name"] = "张三"; 134 arr["age"] = "20"; 135 136 console.log(Object.keys(arr)); 137 </script> 138 </body> 139 </html>