最近处于面试的长途火车上,有一些关于数组的方法的返回值以及是否改变数组,相信有很多小伙伴和我一样,每次用的时候,都去找,相对来说比较麻烦,所以我整理了下,(#^.^#),主要合并了W3school和RUNOOB两个网站里面的知识。
主要有以下一些方法,有添加的下次随时安排上~
方法名介绍返回值是否改变数组join()把数组中的所有元素放入一个字符串返回一个字符串不会pop()删除并返回数组的最后一个元素返回数组最后一个元素改变数组的长度push()向数组的末尾添加一个或多个元素返回新的长度直接修改数组shift()把数组的第一个元素从其中删除数组原来的第一个元素的值(就是删除的那个值)直接修改原有的数组unshift()向数组的开头添加一个或更多元素返回新的长度直接修改原有的数组splice()向/从数组中添加/删除项目返回被删除的项目会改变原始数组slice()从已有的数组中返回选定的元素返回一个新的数组不会concat()用于连接两个或多个数组返回被连接数组的一个副本不会reverse()颠倒数组中元素的顺序返回颠倒后的数组会map()按照原始数组元素顺序依次处理元素返回一个新数组不会filter()指定数组中符合条件的所有元素创建一个新的数组不会forEach()用于调用数组的每个元素,并将元素传递给回调函数undefined会具体介绍:
join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write( arr.join() ) </script>输出:
George,John,Thomaspop() 方法用于删除并返回数组的最后一个元素。
arrayObject 的最后一个元素。
pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
在本例中,我们将创建一个数组,然后删除数组的最后一个元素。请注意,这也会改变数组的程度:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr) document.write("<br />") document.write(arr.pop()) document.write("<br />") document.write(arr) </script>输出:
George,John,Thomas Thomas George,Johnpush() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
把指定的值添加到数组后的新长度。
push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
注释:该方法会改变数组的长度。
提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。
在本例中,我们将创建一个数组,并通过添加一个元素来改变其长度:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write( arr.push("James") + "<br />") document.write(arr) </script>输出:
George,John,Thomas 4 George,John,Thomas,Jamesshift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
数组原来的第一个元素的值。
如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
注释:该方法会改变数组的长度。
提示:要删除并返回数组的最后一个元素,请使用 pop() 方法。
在本例中,我们将创建一个数组,并删除数组的第一个元素。请注意,这也将改变数组的长度:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write( arr.shift() + "<br />") document.write(arr) </script>输出:
George,John,Thomas George John,Thomasunshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
arrayObject 的新长度。
unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。
注释:该方法会改变数组的长度。
注释:unshift() 方法无法在 Internet Explorer 中正确地工作!
提示:要把一个或多个元素添加到数组的尾部,请使用 push() 方法。
在本例中,我们将创建一个数组,并把一个元素添加到数组的开头,并返回数组的新长度:
<script type="text/javascript"> var arr = new Array() arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write( arr.unshift("William") + "<br />") document.write(arr) </script>输出:
George,John,Thomas 4 William,George,John,Thomassplice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
注释:该方法会改变原始数组。
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
所有主流浏览器都支持 splice() 方法。
注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
在本例中,我们将创建一个新数组,并向其添加一个元素:
<script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") arr.splice(2,0,"William") document.write(arr + "<br />") </script>输出:
George,John,Thomas,James,Adrew,Martin George,John,William,Thomas,James,Adrew,Martinslice() 方法可从已有的数组中返回选定的元素。
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
注释:您可使用负值从数组的尾部选取元素。
注释:如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
在本例中,我们将创建一个新数组,然后显示从其中选取的元素:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write( arr.slice(1) + "<br />") document.write(arr) </script>输出:
George,John,Thomas John,Thomas George,John,Thomasconcat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
在本例中,我们将把 concat() 中的参数连接到数组 a 中:
<script type="text/javascript"> var a = [1,2,3]; document.write( a.concat(4,5) ); </script>输出:
1,2,3,4,5reverse() 方法用于颠倒数组中元素的顺序。
注释:该方法会改变原来的数组,而不会创建新的数组。
在本例中,我们将创建一个数组,然后颠倒其元素的顺序:
<script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write( arr.reverse() ) </script>输出:
George,John,Thomas Thomas,John,Georgemap() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
返回一个数组,数组中元素为原始数组的平方根:
var numbers = [4, 9, 16, 25]; function myFunction() { x = document.getElementById("demo") x.innerHTML = numbers.map(Math.sqrt); }输出结果为:
2,3,4,5filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
返回数组 ages 中所有元素都大于 18 的元素:
var ages = [32, 33, 16, 40]; function checkAdult(age) { return age >= 18; } function myFunction() { document.getElementById("demo").innerHTML = ages.filter(checkAdult); }输出结果为:
32,33,40forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
列出数组的每个元素:
<button onclick="numbers.forEach(myFunction)">点我</button> <p id="demo"></p> <script> demoP = document.getElementById("demo"); var numbers = [4, 9, 16, 25]; function myFunction(item, index) { demoP.innerHTML = demoP.innerHTML + "index[" + index + "]: " + item + "<br>"; } </script>输出结果:
index[0]: 4 index[1]: 9 index[2]: 16 index[3]: 25
