常用的Array的方法
##修改器方法,这些方法会改变调用它们的对象自身的值
1.pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
常用例子:
let a=[1,2,3,4,5];let b=a.pop();
console.log(a); //[1,2,3,4]
console.log(b); //5
返回值: 从数组中删除的元素(当数组为空时返回
undefined
)。
2.push() 方法将一个或多个元素添加到数组的末尾,并返回新数组。
常用例子:
let num=[1,2,3];num.push(4);
console.log(num);
num.push(5,6,7);
console.log(num);
返回值:当调用该方法时,返回新的数组长度
3.shift()方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度
常用例子:
let a=[1,2,3];let b=a.shift();
console.log(a); //[2,3]
console.log(b);//1
返回值:从数组中删除的元素,如果当数组为空时返回undefined
4.sort()方法用于对数组进行排序,并返回数组,根据字符串Unicode码点进行排序
常用例子:
fruit.sort(); //根据第一个字母排序
console.log(fruit);
let scores=[1,21,15,2];
scores.sort(scores);
console.log(scores);//[1,15,2,21],根据第一个数字进行排序
返回值:返回排序后的数组,原数组被排序后的数组代替
5.splice()方法通过删除或添加新元素来更改数组的元素
常用例子:
//添加
myFish.splice(2,0,'drum'); //在索引为2的位置插入'drum',从0开始数
console.log(myFish); //["angel", "clown", "drum", "mandarin", "sturgeon"]
//删除
myFish.splice(2,1); //从索引为2的位置删除一项
console.log(myFish); //["angel", "clown", "drum", "mandarin", "sturgeon"]
myFish.splice(2); //从索引为2的位置删除后面所有
console.log(myFish);//["angel", "clown"]
返回值:一个含有提取元素的新数组
6.unshift()方法将一个或多个元素添加到数组的开头
常用例子:
a.unshift(4,5);
console.log(a); //[4, 5, 1, 2, 3]
返回值:当一个对象调用该方法时,返回其 length 属性值访问方法,不会改变调用它们对象的值,只会返回一个新的数组或者返回一个其他的期望值
7.concat()方法用于合并两个或多个数组
常用例子:
let arr2=['d','e','f'];
result=arr1.concat(arr2);
console.log(result); //["a", "b", "c", "d", "e", "f"]
返回值:新的数组
8.join()方法将一个数组的所有元素连接成一个字符串
常用例子:
console.log(arr.join()); // 'Wind,Rain,Fire'
//join()里面的分隔符默认为","
console.log(arr.join("")); // "WindRainFire"
//分隔符为空字符串""
console.log(arr.join("-")); // 'Wind-Rain-Fire'
//分隔符为"-"
返回值:一个所有数组元素连接的字符串。如果 arr.length 为0,则返回空字符串
9.indexOf()方法返回在数组中可以找到一个给定元素的第一个的索引值,如果不存在,则返回-1
常用例子:
console.log(arr.indexOf(2)); //索引为0
console.log(arr.indexOf(3)); //不存在,-1
console.log(arr.indexOf(4)); //索引为2
//两个参数,第一个参数为要查找的元素,第二个为开始查找的位置
//当索引值大于或等于数组长度,返回-1
//当索引值为-1表示从最后一个开始查找,-2为倒数第二个,不改变查找顺序,从前向后
console.log(arr.indexOf(5,1)); //索引为1
console.log(arr.indexOf(8,3)); //4
console.log(arr.indexOf(1,-2)); //-1
console.log(arr.indexOf(2,-6)); //0
迭代方法
10.forEach()方法对数组的每个元素执行一次提供的函数,遍历数组
常用例子:
arr.forEach((item,index)=>{
alert(index+":"+item);
})
参数:item当前的值,index当前项的索引,数组本身arr
返回值:undefined
11.filter()过滤,不会改变原数组,返回过滤后的新数组
常用例子:
//筛选可以被3整除的数
let result=arr.filter(function(item){
if(item%3==0){
return true;
}else {
return false;
}
});
console.log(result);
参数:item当前的值,index当前项的索引,数组本身arr
返回值:一个新的通过测试的元素的集合的数组
12.map()映射,创建新数组,结果为原数组调用函数后返回的结果
常用例子:
let arr=[35,66,99,56,79,80];
let result=arr.map(item=>item>60?"及格":"不及格");
alert(result);
回调函数的三个参数: item当前的值,index当前项的索引,数组本身arr
返回值:一个新数组,每个元素都是回调函数的结果。
13.reduce()方法,把一堆变成一个
常用例子:
回调函数第一次执行,提供初始值时,prev为提供的值,current为数组中的第一个值;
没有提供初始值,prev为数中的第一个值,current为数组中的第二个值
//1.利用reduce求和
let arr=[1,2,3,4];
let result=arr.reduce(function(prev,current,index){
return prev+current;
})
alert(result);
//2.计算水果出现的次数
var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordCnt(){
return arr.reduce(function(prev,next){
prev[next] = (prev[next] + 1) || 1;
return prev;
},{}); //(提供了一个空的对象作为初始值)
}
console.log(getWordCnt());
方法二:
var arr=["apple","orange","apple","orange","pear","orange"];
var countWord=arr.reduce(function(allFruits,fruit){
if(fruit in allFruits){
allFruits[fruit]++;
}else{
allFruits[fruit]=1;
}
return allFruits;
},{})
console.log(countWord);
//数组去重
let arr=[1,2,1,2,3,5,4,5,3,4,2,4,2];
let result=arr.sort().reduce((init,current)=>{
if(init.length===0||init[init.length-1]!==current){
init.push(current);
}
return init;
},[]);
console.log(result);