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>