一. 转换为字符串的方法
1.1 toString()
转换方法:
返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
<script type="text/javascript">
var arr = [50, 20, 10, 5, 15, 6];
alert(arr.toString()); // 50,20,10,5,15,6
alert(arr); // 50,20,10,5,15,6 当把一个对象直接给alert,则会调用这个对象的toString方法,然后再输出。
</script>
1.2 join() 方法:
toString()
方法只能使用逗号连接,而 join()
方法可以使用指定的连接符连接
<script type="text/javascript">
var arr = [50, 20, 10, 5, 15, 6];
alert(arr.join("=")); // 50=20=10=5=15=6
</script>
二. 栈方法
栈:一种数据结构。特点:FILO (先进后出)
向栈中存入元素 称之为 入栈(
push
)、从栈中移除元素称之为出栈(pop
)。先入栈的元素在栈地下,后入栈的元素在栈顶。这两个动作都是对栈顶的元素进行操作。一般栈提供这两个操作足矣。
JavaScript中,支持像操作栈一样去操作数组。
<script type="text/javascript">
var arr = ["张三", "李四", "王五"];
//向栈中添加元素(最后添加的元素肯定在栈顶) 数组中的元素:"张三", "李四", "王五", "志玲"
var len = arr.push("志玲"); //push方法返回添加成功后的数组的长度
alert(len); // 弹出:4
arr.push("a", "b"); //也可以向在push方法中传入多个参数,这样每个参数都会添加到数组中。 栈顶元素是 "b"
//pop出栈,一次只能出栈一个元素
var item = arr.pop(); //把栈顶的元素从栈(数组)中移除。并返回移除的这个元素
alert(item); // 弹出:b
</script>
说明:
- 入栈其实就是把新的元素添加到数组的后面
- 出栈其实就是把数组中的最后一个元素从数组中移除
三. 队列方法
队列也是一种数据结构。 特点:FIFO(先进先出)
JavaScript中,对数组的操作也提供了模拟队列的方法。
向队列头部添加元素(
unshift
)、从队列头部移除元素(shift
)向队列尾部添加元素、从队列尾部移除元素
注意:
- 对队列尾部的操作没有提供新的方法,使用push和pop可以完成相应的操作。
<script type="text/javascript">
//把arr当做队列对待,那么 队列头部元素就是 "张三", 队尾元素就是 "王五"
var arr = ["张三", "李四", "王五"];
var firstItem = arr.shift(); //把队首元素从队列中移除,并返回移除的这个元素
alert(firstItem); //张三
alert(arr); // 李四, 王五
var len = arr.unshift("志玲"); //向队列头部添加元素,并返回添加成功后队列(数组)的长度
alert("数组长度:" + len); // 数组长度:3
alert(arr); // 志玲, 李四, 王五
arr.unshift("a", "b");
alert(arr); // a, b, 志玲, 李四, 王五
</script>
四. 数组中元素的倒置
<script type="text/javascript">
var arr = ["张三", "李四", "王五"];
alert("数组倒置前:" + arr);
//对数组元素进行倒置。
arr.reverse();
alert("数组倒置后:" + arr);
</script>
注意:
- 倒置操作是对原数组本身做了操作,返回的也是原数组对象,并不是一个新创建的数组。
五. 查找指定元素在数组中的索引
indexOf(item)
: 从前面开始向后查找 item 第一次出现的位置lastIndexOf(item)
: 从尾部开始向前查找 item 第一次出现的位置
说明:
- 如果找不到则返回
-1
<script type="text/javascript">
var arr = ["张三", "张三", "李四", "王五", "张三", "李四", "王五"];
alert(arr.indexOf("张三")); // 0
alert(arr.lastIndexOf("张三")); // 4
</script>
indexOf(item, fromBack)
: 从第二个参数的位置开向后始查找item
第一次出现的位置
lastIndexOf(item, fromForward)
: 从第二个参数的位置开始向前查找item
第一次出现的位置
<script type="text/javascript">
var arr = ["张三", "张三", "李四", "王五", "张三", "李四", "王五"];
alert(arr.indexOf("张三", 2)); // 4
alert(arr.lastIndexOf("张三", 3)); // 1
</script>
六. 获取新的数组
arr.concat(arrayX,arrayX,......,arrayX)
该方法用于连接两个或多个数组。至少传入一个参数,参数可以是数组也可以是元素。
注意:该方法是返回的一个新的数组,原数组没有做任何改变
<script type="text/javascript">
var arr1 = ["a", "b", "c"];
//把参数数组与arr1连接起来,并返回连接后的新数组
var newArr = arr1.concat(["c", "d"]);
//新数组的长度是 5
alert(newArr.length);
//原数组的长度还是 3 。原数组中的元素没有做任何变化
alert(arr1.length);
//把两个元素和一个数组与原数组arr1连接起来,并返回新的数组
var newArr2 = arr1.concat("e", "f", ["g", "h"]);
//新数组长度为:7
alert(newArr2.length);
</script>
arr.slice(start,end)
截取数组,并返回截取到的新数组
start
:必须。从原数组中的start
位置开始截取(包括下标为start
的元素) 如果是负数表示从尾部开始截取:-1
表示最后一个元素。(或者理解成从start+length
的位置开始截取)end
: 可选。截取到指定位置,不包括下标为end
的元素。如果没指定,则指的是截取到最后一个元素end
要大于start
,否则截取不到元素注意:该方法是返回的一个新的数组,原数组没有做任何改变
<script type="text/javascript">
var arr1 = ["a", "b", "c", "d", "e", "f"];
// 从下标为0的位置开始截取,截取到下标2,但是不包括下标为2的元素. 原数组没有任何的变化
var newArr = arr1.slice(0, 2);
alert(newArr);// a, b
alert(arr1.slice(1, 4)); // b,c,d
//从下标为2的元素开始截取,一直到最后一个元素
alert(arr1.slice(2)); //c,d,e,f
//从倒数第5个元素,截取到倒数第2个
alert(arr1.slice(-5, -2)); // b c d
</script>
七. 一个超级牛逼的方法
这个是一个超级牛逼的方法, 一个方法可以玩出三个功能:
添加元素
删除元素
修改元素
他就是无敌的splice()
方法.
arr.splice(index,howmany,item1,.....,itemX)
:
参数
index
: 从这个下标index
开始操作这个数组. 必须参数
howmany
: 你想删除的元素的个数. 如果需要删除就传入0
就可以了.不限个数的参数: 你想添加的元素, 个数不限. 如果不需要添加元素就可以不传入任何的元素.
添加元素
var arr = [10, 20, 30, 40, 50];
console.log("原数组:", arr);
// 从下标为 1 的位置开始添加元素. 因为不需要删除 所以第二个是0
arr.splice(1, 0, 100, 200);
console.log("添加后:", arr);
删除元素
var arr = [10, 20, 30, 40, 50];
console.log("原数组:", arr);
// 从下标为 2 的位置开始删除 3 个元素
arr.splice(2, 3);
console.log("删除后:", arr);
替换元素
var arr = [10, 20, 30, 40, 50];
console.log("原数组:", arr);
// 把 30 40 换成 300 400 :
arr.splice(2, 2, 300, 400);
console.log("删除后:", arr);