JS面试题:数组上的方法

169 阅读6分钟

数组这一数据结构在JavaScript中被运用得很多,它通常被用来存储各种各样的数据。JS数组上提供了许多的方法来方便开发者对数组进行增删改查等操作。

增删改查

在数组中增加元素

在数组中可以通过push,unshift,splice,concat这些方法来增加元素。

  • push
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.push('A');
console.log(arr);// 输出 [1, 2, 3, 4, 5, 6, 7, 8, 'A']

push方法可以向数组的末尾添加一个或多个元素。

  • unshift
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.unshift('B');
console.log(arr); // 输出 ['B', 1, 2, 3, 4, 5, 6, 7, 8]

unshift方法可以向数组的开头添加一个或多个元素。

  • splice
const arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.splice(3, 0, 'C')//向arr数组的索引3处插入元素M
console.log(arr);  //输出:[1, 2, 3, 'C', 4,5, 6, 7, 8]

splice方法的第一个参数代表元素要插入的数组的下标,第二个参数代表数组要删除的元素数量,从第二个参数之后的参数代表要插入到数组中的元素。

  • concat
const arr = [1, 2, 3, 4, 5, 6, 7, 8]
const arr2 = ['A', 'B', 'C']
const arr3 = arr.concat(arr2) //arr3的值是数组arr和arr2拼接后的元素的组合
console.log(arr3);//输出:[1, 2, 3, 4, 5, 6, 7, 8, 'A', 'B', 'C']

concat方法用于合并两个或多个数组,并且会返回一个新的数组。

在数组中删除元素

在数组中可以通过pop shift splice slice这些方法来删除元素。

  • pop
const arr = [1, 2, 3, 4, 5, 6, 7, 8]
const A=arr.pop()
console.log(A);//输出8
console.log(arr);//输出[1, 2, 3, 4, 5, 6, 7]

pop方法会删除数组中的最后一个元素,并且返回这个被删除的元素。

  • shift
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const B = arr.shift();
console.log(B); //输出1
console.log(arr); //输出[2, 3, 4, 5, 6, 7, 8] 

shift方法会删除数组中的第一个元素,并且返回这个被删除的元素。

  • splice
const arr = [1, 2, 3, 4, 5, 6, 7, 8]


// const arr2 = [1, 2, 3]
const arr2 = arr.splice(0, 2)//从数组arr的下标0开始切割两个元素
console.log(arr);//输出[ 3, 4, 5, 6, 7, 8 ]
console.log(arr2);//输出[ 1, 2 ]
  • slice
const arr = [1, 2, 3, 4, 5, 6, 7, 8]
const arr2 = arr.slice(0, 2)
console.log(arr);//输出[1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr2);//输出[ 1, 2 ]

slice和splice的区别在于,使用splice进行切割会改变原数组,而slice则不会。

对数组中的元素进行修改

在数组中可以通过reverse sort这些方法来对数组中的元素进行修改。

  • reverse
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.reverse(); console.log(arr);
// 输出 [8, 7, 6, 5, 4, 3, 2, 1]

reverse方法用于颠倒数组中元素的顺序,需要注意的是这个方法会修改原数组。

  • sort
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.sort((a, b) => b - a);// 对数组进行降序排序 
console.log(arr);// 输出 [8, 7, 6, 5, 4, 3, 2, 1]

sort方法用于对数组中的元素进行排序,需要注意的是这个方法会修改原数组。

对数组中的元素进行查询

在数组中可以通过indexOf includes lastIndexOf find这些方法来对数组中的元素进行查询。

  • indexOf
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const index1 = arr.indexOf('A');//查找元素A
const index2 = arr.indexOf('B');//查找元素B 
const index3 = arr.indexOf(1); //查找元素1

console.log(index1); //查找成功,输出元素A的下标8
console.log(index2);//查找失败,输出-1
console.log(index3); //查找成功,输出1的下标0

indexOf会在数组中查找指定元素的索引,并返回第一个匹配的元素索引,如果未找到该元素的话则会返回-1。

  • includes
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']

const includes1 = arr.includes('A');//查找元素A
const includes2 = arr.includes('B');//查找元素B
const includes3 = arr.includes(1);//查找元素1

console.log(includes1); //查找成功 数组中包含元素A 输出 true 
console.log(includes2); //查找失败 数组中包含元素B 输出 false
console.log(includes3); //查找成功 数组中包含元素1 输出 true

使用includes方法在数组中查找元素,如果数组中包含该元素则会返回 true,否则返回 false。

  • lastIndexOf
const arr = ['A',1, 2, 3, 4, 5, 6, 7, 8,'A']

const lastIndex1 = arr.lastIndexOf('A');//查找元素A
const lastIndex2 = arr.lastIndexOf('B');//查找元素B
const lastIndex3 = arr.lastIndexOf(1);//查找元素1


console.log(lastIndex1); //查找成功 输出最后的A的下标9
console.log(lastIndex2); //查找失败 输出 -1 
console.log(lastIndex3); //查找成功 输出最后的1的下标1

lastIndexOf会从后往前在数组中查找指定元素的索引,并返回最后一个匹配的元素索引,如果没有找到则会返回 -1。

  • find
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const arr2 = arr.find((item, index, arr) => {
  return item > 5
})

console.log(arr2);//输出6

find会在数组中查找满足指定条件的第一个元素,并返回该元素。否则返回undefined。

转换和迭代

数组的转换

使用join方法可以实现数组的转换。

  • join
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const str = arr.join(', ');//用“,”分隔
console.log(str); // 输出 1, 2, 3, 4, 5, 6, 7, 8, A

join方法会将数组中所有元素转化为字符串并连接起来,返回一个由连接的元素而组成的字符串。

数组的迭代

在数组中可以使用forEach map filter some every这些方法来实现数组的迭代,当然除了以上方法还可以使用最经典的for循环来实现对数组的迭代。

  • forEach
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
arr.forEach(item => {
    console.log(item);
});
  • map
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const arr2 = arr.map(item => {
    return item+1;
});

console.log(arr2); // 输出[2,3,4,5,6,7,8,9,'A1']

值得注意的是,map方法会返回执行后的结果组成的新数组。

  • filter
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const arr2 = arr.filter(element => {
    return element % 2 === 0; // 筛选出偶数元素
});
console.log(arr2); // 输出[ 2, 4, 6, 8 ]

filter方法会筛选出数组中满足条件的元素,并返回一个由这些元素组成的新数组。

  • some
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const Some = arr.some(element => {
    return element % 2 === 0; // 检查数组中是否存在偶数元素
});

console.log(Some); // 输出 true

some方法会数组中是否存在元素满足指定条件,如果存在满足条件的元素,返回 true,否则返回 false。

  • every
const arr = [1, 2, 3, 4, 5, 6, 7, 8,'A']
const Every = arr.every(element => {
    return element % 2 === 0; // 检查数组中所有元素是否都为偶数
});

console.log(Every); // 输出 false

every和some不同的是,every需要数组中的所有元素都满足指定的条件才会返回true。

总结

在JavaScript中,数组上有许多的方法来供开发者进行增删改查等操作,掌握这些方法可以帮助我们的开发,同时也是我们应对面试的基础知识。