不改变原数组的方法
1、ndexOf() 和lastIndexOf()
1.indexof() : 返回元素在数组的第一次出现的索引,从0开始。若数组不存在该元素,则返回-1。
var arr = [1, 2, 2];
arr.indexOf(1); //0
arr.indexOf(10); //-1
2.lastIndexOf(): 返回元素在数组最后一次出现的索引,如果没有出现则返回-1.
var arr = [1, 2, 2];
arr.lastIndexOf(2); //2
arr.lastIndexOf(10); //-1
2、slice()截取数组的一部分,返回一个新的数组,与字符串的substring()方法一样
1.slice(start)一个参数,索引从start开始截取
var arr = [1, 2, 2, 5, 6];
arr.slice(2) // [2, 5, 6]
2.slice(start,end)两个参数,索引从start开始到索引end结束。通常,接受2个参数作为一个左闭右开区间,即包括开始索引位置的元素,但不包括结束索引位置的元素。
var arr = [1, 2, 2, 5, 6];
arr.slice(1,3) // [2, 2]
3.slice()没有参数,则是复制整个数组。
var arr = [1, 2, 2, 5, 6];
arr.slice();
3、concat():合并数组。返回一个新的数组
1.方法的参数可以有多个,也可以任意类型,数值、字符串、布尔值、数组、对象 都可以,参数会被添加到新的数组中。
var arr1 = [1, 2, 3,4,5,6];
var arr2 = ['a','b','c'];
var arr3 = arr1.concat(arr2);
arr3; //[1, 2, 3, 4, 5, 6, "a", "b", "c"]
2.注意,如果参数是数组, 会被拉平一次,即数组会被拆开来,加入到新的数组中。
var arr1 = [1, 2, 3];
var arr2 = arr1.concat(66,'abc',true,[10,20],[30,[31,32]],{x:100});
arr2; //[1, 2, 3, 66, "abc", true, 10, 20, 30, [31,32], {x:100}]
4、join()将数组转换为字符串
它会把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串。 1.参数是用来指定连接的字符串。
var arr = [1, 2, 3];
arr.join('*') //"1*2*3"
2.如果没有指定参数,默认是用 "," 连接。
var arr = [1, 2, 3];
arr.join() //"1,2,3"
6、map()数组中的元素为原始数组元素调用函数处理后的值。 map() 方法按照原始数组元素顺序依次处理元素。 注意: map() 不会对空数组进行检测。 注意: map() 不会改变原始数组。
1.对数组的所有成员依次调用一个函数,返回值是一个新数组。
arr.map(function(elem, index, arr) {
return elem * index;
});
//[0, 2, 6]
2.map方法接受一个函数作为参数,该函数调用时,map方法会将其传入3个参数,分别是当前成员、当前位置和数组本身(后2个参数可选)。
arr.map(function(elem, index, arr) {
return elem * index;
});
//[0, 2, 6]
3.map方法还可以接受第2个参数,表示回调函数执行时this所指向的对象。
7、forEach():
与map方法很相似,也是遍历数组的所有成员,执行某种操作。注意:forEach方法一般没有返回值
var arr = [1, 2, 3];
function log(element, index, array) {
console.log('[' + index + '] = ' + element);
}
arr.forEach(log);
// [0] = 1
// [1] = 2
// [2] = 3
8、filter(): 删选
var arr = [1, 2, 3, 4, 5];
arr.filter(function (elem, index, arr) {
return index % 2 === 1;
});
//[2, 4]