<table class="javascript">
<tr class="li1"><td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
@H_404_1@</td>
<td class="de1"><pre class="de1">###join
作用:join方法把当前数组元素转换为字符串并返回<span class="br0">(不操作原数组<span class="br0">)。
参数<span class="sy0">: 只有一个参数,作为两个数组单元的连接符,必须为string类型.如果省略就使用默认的“,”分割.
<span class="kw1">var</span> a <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">3</span><span class="sy0">,</span><span class="nu0">4</span><span class="sy0">,</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span>
a.<span class="me1">join</span><span class="br0">(</span><span class="br0">)</span> <span class="co1">//"1,2,3,4,5"</span>
a.<span class="me1">join</span><span class="br0">(</span><span class="st0">"-"</span><span class="br0">)</span> <span class="co1">// "1-2-3-4-5"</span>
a <span class="co1">//[1,5]</span>
reverse
作用:reverse方法反转当前数组元素(操作当前数组,并返回一个新数组).
参数:无参数
<span class="kw1">var</span> a <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span>
<span class="kw1">var</span> b <span class="sy0">=</span> a.<span class="me1">reverse</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
b <span class="co1">//[5,1];</span>
a <span class="co1">//[5,1];</span>
sort
作用:sort用于为当前数组元素排序。
参数<span class="sy0">: 只有一个参数,必须为函数,规定排序顺序。
如果没有参数,默认为ASCII码的顺序进行排列。
<span class="kw1">var</span> a <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">10</span><span class="sy0">,</span><span class="nu0">5</span><span class="sy0">,</span><span class="nu0">40</span><span class="sy0">,</span><span class="nu0">25</span><span class="sy0">,</span><span class="nu0">1000</span><span class="sy0">,</span><span class="nu0">1</span><span class="br0">]</span><span class="sy0">;</span>
a.<span class="me1">sort</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
a <span class="co1">//[1,10,1000,25,40,5]</span>
我们发现,ASCII码排序是按照字符的位数和位数进行比较,首先首位排序,首位如果一样,就继续向下按此中方式排序。
这种排序方法,可能不是我们想要的结果,我们可以使用sort的排序函数<span class="sy0">:
<span class="kw1">var</span> a <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">10</span><span class="sy0">,</span><span class="nu0">1</span><span class="br0">]</span><span class="sy0">;</span>
a.<span class="me1">sort</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>a<span class="sy0">,</span>b<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> a <span class="sy0">-</span> b<span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">//[1,5,1000]</span>
concat
作用:拼接数组并返回一个新数组<span class="br0">(不操作原数组<span class="br0">)<span class="sy0">:
参数:没有类型和数量限制,拼接到数组中的值<span class="sy0">;
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">23</span><span class="sy0">,</span><span class="nu0">45</span><span class="br0">]</span><span class="sy0">;</span>
arr.<span class="me1">concat</span><span class="br0">(</span><span class="nu0">23</span><span class="sy0">,</span><span class="nu0">45</span><span class="sy0">,</span><span class="nu0">56</span><span class="br0">)</span> <span class="co1">// [23,45,23,56]</span>
arr.<span class="me1">concat</span><span class="br0">(</span><span class="br0">[</span><span class="nu0">23</span><span class="sy0">,</span><span class="nu0">56</span><span class="br0">]</span><span class="br0">)</span> <span class="co1">// [23,56]</span>
slice
作用<span class="sy0">: 截取数组元素并返回一个新数组<span class="br0">(不操作原数组<span class="br0">)
参数<span class="sy0">: 第一个参数是必需的,第二个可选,前者表示开始截取的数组索引,后者是结束的i 索引,如不设置第二个参数就默认到结束。
他们都都可以接受负数,<span class="sy0">-<span class="nu0">1 指最后一个元素,<span class="sy0">-<span class="nu0">2 指倒数第二个元素,以此类推。
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">]</span><span class="sy0">;</span>
<span class="kw1">var</span> n <span class="sy0">=</span> arr.<span class="me1">slice</span><span class="br0">(</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">2</span><span class="br0">)</span><span class="sy0">;</span>
arr <span class="co1">//[1.2.3.4]</span>
n <span class="co1">//[1,2]</span>
splice
作用:它是在数组中插入和删除的通用方法
参数<span class="sy0">: 两个必需的参数,第一个是开始的位置,以下标为准,也支持负数,从数组尾部计算。第二个是删除的个数,如不删除则是<span class="nu0">0,
第三个是可选参数,添加到数组当中的内容<span class="sy0">;
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span>
arr.<span class="me1">splice</span><span class="br0">(</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">10</span><span class="sy0">,</span><span class="nu0">11</span><span class="br0">)</span><span class="sy0">;</span>
arr <span class="co1">// [10,11,5]</span>
arr.<span class="me1">splice</span><span class="br0">(</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">12</span><span class="sy0">,</span><span class="nu0">13</span><span class="br0">)</span> <span class="co1">//10,12,13,5</span>
push 和 pop
作用:数组尾部入栈和出栈,注意返回值:push返回新添加元素的索引,pop返回移除的数组元素。他们两个都操作原数组.
参数<span class="sy0">: push可有无限参数,指需要添加到当前数组中的元素<span class="sy0">,pop则没有参数.
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">]</span>
<span class="kw1">var</span> _arr <span class="sy0">=</span> arr.<span class="me1">push</span><span class="br0">(</span><span class="nu0">5</span><span class="br0">)</span>
_arr <span class="co1">//5</span>
arr <span class="co1">//[1,5]</span>
<span class="kw1">var</span> pop <span class="sy0">=</span> arr.<span class="me1">pop</span><span class="br0">(</span><span class="br0">)</span>
pop <span class="co1">//5</span>
arr <span class="co1">//[1,4]</span>
unshift shift
作用:数组头部入栈和出栈,返回值和push pop相对应。unshift对应push,shift对应pop
参数<span class="sy0">:
toString 和 toLocaleString
作用:把当前对象转换为字符串。
参数<span class="sy0">:toString有一个可选参数radix,和parseInt的第二个参数一样,代表基数,即<span class="sy0">*进制数
区别<span class="sy0">: toString和toLocaleString的区别为,toString单纯的把数组单元转换为字符串格式,而toLocaleString使用了你电脑本地环境上的格式.
<span class="nu0">1222</span>..<span class="me1">toString</span><span class="br0">(</span><span class="br0">)</span> <span class="co1">//"1222";</span>
<span class="nu0">1222</span>..<span class="me1">toLocaleString</span><span class="br0">(</span><span class="br0">)</span> <span class="co1">//"1,222"</span>
<span class="kw1">new</span> <span class="kw4">Date</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">toString</span><span class="br0">(</span><span class="br0">)</span> <span class="co1">//"Sat Mar 25 2017 18:48:09 GMT+0800 (CST)"</span>
<span class="kw1">new</span> <span class="kw4">Date</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">toLocaleString</span><span class="br0">(</span><span class="br0">)</span> <span class="co1">//"2017/3/25 下午6:48:19"</span>
详细介绍他们的区别,大家可以看 http<span class="sy0">:<span class="co1">//www.cnblogs.com/niulina/p/5699031.html
ES5中的数组方法
以下九个方法中,大多方法都接收一个函数为参数,并且对数组的每个元素都调用一次该函数.通常情况下我们只需要关心函数的第一个参数,其他参数为可选。
forEach
作用:遍历数组
参数:<span class="kw1">function<span class="br0">(v<span class="sy0">,i<span class="sy0">,a<span class="br0">)<span class="br0">{ <span class="br0">}<span class="sy0">; v <span class="sy0">: 当前遍历的数组元素。i<span class="sy0">:当前元素位于原数组中的索引<span class="br0">(也就是当前遍历的i<span class="br0">)<span class="sy0">; a<span class="sy0">:数组本身,引用它并改变原数组<span class="sy0">;
需要注意的是,forEach不返回任何值.
<span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">]</span>.<span class="me1">forEach</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>v<span class="sy0">,</span>a<span class="br0">)</span><span class="br0">{</span> console.<span class="me1">log</span><span class="br0">(</span>v<span class="br0">)</span><span class="sy0">;</span> console.<span class="me1">log</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span> console.<span class="me1">log</span><span class="br0">(</span>a<span class="br0">)</span><span class="sy0">;</span> <span class="br0">}</span><span class="br0">)</span>
map
作用<span class="sy0">:遍历数组
参数<span class="sy0">:<span class="kw1">function<span class="br0">(item<span class="sy0">,index<span class="br0">)<span class="br0">{<span class="br0">} item<span class="sy0">:当前数组元素<span class="sy0">; index<span class="sy0">:当前数组下标.
默认返回的是数组,如果是稀疏数组,依然会保留数组单元,为<span class="kw2">undefined;
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span> arr.<span class="me1">map</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>item<span class="sy0">,</span>index<span class="br0">)</span><span class="br0">{</span> <span class="kw1">return</span> item <span class="co1">//[1,5]</span> <span class="br0">}</span><span class="br0">)</span>
它的返回值总是一个数组.
filter
作用:筛选数组元素
参数:<span class="kw1">function<span class="br0">(item<span class="sy0">,index<span class="br0">)<span class="br0">{<span class="br0">} 回调函数中的参数和map一养,item为数组元素,index为数组索引
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">6</span><span class="sy0">,</span><span class="nu0">7</span><span class="sy0">,</span><span class="nu0">8</span><span class="br0">]</span> arr.<span class="me1">filter</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>x<span class="sy0">,</span>y<span class="br0">)</span><span class="br0">{</span> <span class="kw1">return</span> x <span class="sy0">></span> <span class="nu0">5</span><span class="sy0">;</span> <span class="br0">}</span><span class="br0">)</span> <span class="co1">//[6,7,8]</span>
回调如果返回<span class="kw2">true就把当前遍历到的数组元素放入到准备返回的数组队列中,否则就跳过进行下一个。
every <span class="sy0">&& some
作用<span class="sy0">:两个方法类似filter但是他们返回布尔值<span class="sy0">,every只在每个元素都与之匹配时才会返回<span class="kw2">true,而some是只有一个就返回<span class="kw2">true,反之亦然.
参数<span class="sy0">:<span class="kw1">function<span class="br0">(item<span class="sy0">,index<span class="br0">)<span class="br0">{<span class="br0">} 参数为一个回调函数,函数中依旧是数组元素与当前索引<span class="sy0">;
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">8</span><span class="br0">]</span><span class="sy0">;</span> arr.<span class="me1">every</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>v<span class="sy0">,</span>i<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> v <span class="sy0">></span> <span class="nu0">5</span><span class="br0">}</span><span class="br0">)</span> <span class="co1">//false</span> arr.<span class="me1">every</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>v<span class="sy0">,</span>i<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> v <span class="sy0">></span> <span class="nu0">0</span><span class="br0">}</span><span class="br0">)</span> <span class="co1">///true</span> arr.<span class="me1">some</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>v<span class="sy0">,</span>i<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> v <span class="sy0">></span> <span class="nu0">7</span><span class="br0">}</span><span class="br0">)</span> <span class="co1">//true</span> arr.<span class="me1">some</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>v<span class="sy0">,</span>i<span class="br0">)</span><span class="br0">{</span><span class="kw1">return</span> v <span class="sy0">></span> <span class="nu0">8</span><span class="br0">}</span><span class="br0">)</span> <span class="co1">//false</span>
reduce <span class="sy0">&& reduceRight
作用:使用指定的函数将数组元素进行组合,在函数式编程中应用广泛
参数:<span class="kw1">function<span class="br0">(a<span class="sy0">,b<span class="br0">)<span class="br0">{<span class="br0">} <span class="sy0">, init,第一个函数我们称为化简函数,它<span class="br0">(函数<span class="br0">)的第一个参数是初始值,对应reduce的第二个参数,它<span class="br0">(函数<span class="br0">)第二,三,四参数分别是:数组元素,数组索引,数组本身。假如你已经设置默认值<span class="br0">(reduce第二个参数<span class="br0">)<span class="sy0">,那么a就是那个默认值,否则从数组当中前两个开始,也就是 a <span class="sy0">= arr<span class="br0">[<span class="nu0">0<span class="br0">] <span class="sy0">, b<span class="sy0">=<span class="br0">[arr1<span class="br0">]。
<span class="kw1">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">4</span><span class="sy0">,</span> <span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span> arr.<span class="me1">reduce</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>a<span class="sy0">,</span>b<span class="br0">)</span><span class="br0">{</span> <span class="kw1">return</span> a <span class="sy0">+</span> b <span class="br0">}</span><span class="br0">)</span> <span class="co1">//15</span> <span class="co1">//设置默认值</span> arr.<span class="me1">reduce</span><span class="br0">(</span><span class="kw1">function</span><span class="br0">(</span>a<span class="sy0">,</span>b<span class="br0">)</span><span class="br0">{</span> <span class="kw1">return</span> a <span class="sy0">+</span> b<span class="sy0">;</span> <span class="br0">}</span><span class="sy0">,</span><span class="nu0">1</span><span class="br0">)</span> <span class="co1">//16</span>
indexOf
作用<span class="sy0">:indexOf和lastIndexOf用于查询数组中给定的元素<span class="sy0">,返回第一个查找到的元素下标,如果没有找到就返回-<span class="nu0">1,indexOf从头到尾lastIndexOf则相反。
参数<span class="sy0">:两个参数,第一个是需要查找的元素,第二个是开始查找的下标,也就是从哪开始查找;
注意:此方法也可以应用在string类型上
<span class="st0">"1234567"</span>.<span class="me1">indexOf</span><span class="br0">(</span><span class="st0">"6"</span><span class="br0">)</span> <span class="co1">//5</span> <span class="br0">[</span><span class="nu0">2</span><span class="sy0">,</span><span class="st0">"sd"</span><span class="sy0">,</span><span class="st0">"er"</span><span class="br0">]</span>.<span class="me1">indexOf</span><span class="br0">(</span><span class="st0">"sd"</span><span class="sy0">,</span><span class="nu0">3</span><span class="br0">)</span> <span class="co1">//4</span>
@H_404_1@</td>
</tr>