JavaScript中的常用Array方法总结

 js中有许多关于数组的方法,在一些算法题中经常需要使用到这些方法,现在此做一个总结。

indexOf()

该方法将从头到尾检索数组,找到对应元素的索引值(index)并返回这个index。如果数组中没有相对应的元素则返回-1。

const birds = ['Parrot', 'Falcon', 'Owl'];
console.log(birds.indexOf('Owl'));   //  2
console.log(birds.indexOf('Rabbit')); // -1

push()

将一个或多个元素添加到数组末尾,并返回新数组。

var arr = ['cat','dog','rabbit'];
arr.push('pig')
console.log(arr)// ["cat", "dog", "rabbit", "pig"]

unshift()

将一个或多个元素添加到数组的起始位置,并返回新数组。

var arr = ['cat','dog','rabbit'];
arr.unshift('pig')
console.log(arr);//["pig", "cat", "dog", "rabbit"]

pop()

删除数组的最后一个元素并返回删除的元素。

var arr = ['cat','dog','rabbit'];
arr.pop()
console.log(arr);// ["cat", "dog"]

shift()

删除数组的第一个元素并返回删除的元素。

var arr = ['cat','dog','rabbit'];
arr.shift()
console.log(arr);// ["dog", "rabbit"]

splice()

已知元素的索引值,可以用该方法删除/添加元素。

如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

splice(index,num,item1,item2...)

index:开始删除/添加的位置

num:删除元素的数量。可以为0,返回一个空数组[]

itemX:要添加到数组的新元素

const cities = ['Manchester', 'Liverpool', 'Edinburgh', 'Carlisle'];
const index = cities.indexOf('Liverpool');
if (index !== -1) {
  cities.splice(index, 1);
}
console.log(cities);     // [ "Manchester", "Edinburgh", "Carlisle" ]

 使用splice()中可能会遇到的问题

for循环中使用splice()元素下标改变,会跳过某个元素删除。

解决方法:

 for(let n=num.length-1;n>-1;n--){
     //从数组末开始遍历,倒序循环删除即可。具体代码需按需求修改。
        list.splice(num[n],1) 
 }

for...of...

获得每个元素

const birds = ['Parrot', 'Falcon', 'Owl'];
​
for (const bird of birds) {
  console.log(bird);
}
//依次输出Parrot Falcon Owl
//相当于使用for循环遍历

map()

若想要对数组中的每个元素进行相同的修改,可以使用map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。 map() 不会改变原始数组。

function double(number) {
  return number * 2;
}
const numbers = [5, 2, 7, 6];
const doubled = numbers.map(double);
console.log(doubled);  // [ 10, 4, 14, 12 ]

filter()

若想要创造一个新数组包含原数组中符合条件的元素,可以使用filter()

返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

注意: filter() 不会对空数组进行检测。filter() 不会改变原始数组。

function isLong(city) {
  return city.length > 8;
}
const cities = ['London', 'Liverpool', 'Totnes', 'Edinburgh'];
const longer = cities.filter(isLong);
console.log(longer);  // [ "Liverpool", "Edinburgh" ]

join()

将数组转化为字符串。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join();
console.log(energy);//Banana,Orange,Apple,Mango

与slice()方法刚好相反

slice() string方法

若想要截取长字符串中有用的元素到数组中,可以使用slice()

const data = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
const cities = data.split(',');
console.log(cities[0]);
// the first item in the array:Manchester
console.log(cities[1]); 
// the second item in the array:London
console.log(cities[cities.length - 1]) ;
// the last item in the array:Carlisle

reverse()

反转数组顺序。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
console.log(fruits)//Mango,Apple,Orange,Banana

sort()

对数组进行排序。会改变原始数组。

var arr = [1,1000,40,2];
arr.sort();
console.log(arr)//[1,1000,2,40] 默认排序顺序为按字母升序。
//会先按最大位数字大小排序

数字排序(升序)

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
console.log(points);
//1,5,10,25,40,100

数字排序(降序)

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});
console.log(points);
//100,40,25,10,5,1

字母降序排列

先使用一次sort(),再使用一次reserve()即可。

例子摘自MDN和菜鸟教程,有错误欢迎指出和交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值