面试官问你 数组上面有哪些办法

哈喽哈喽,我是你们的金樽清酒。咱们知道数组上面是有很多的办法的,很难记的全面,再加上面试比较紧张,脑子里会一片空白,当你零零星星的把你所记得的告知面试官,或许会让面试官对你有不好的点评,觉得你基础不行扎实,那么咱们怎样去有条不紊的把一切的办法给罗列出来呢?或许下面的内容能够帮到你?记住增、删、改、查、转换、迭代。

数组上增的办法

  • push() 在数组的末尾增加元素
let arr=[1,2,3,4]
arr.push(5,6,7,8)
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
咱们能够看到在原数组中增加了5,6,7,8.所以push办法会改动原数组。

  • unshift() 办法将指定元素增加到数组的最初,并回来数组的新长度。
const arr = [1, 2, 3, 4]
console.log(arr.unshift(-2, -1, 0))
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • splice() splice() 办法经过移除或者替换已存在的元素和/或增加新元素就地改动一个数组的内容。

//增
const arr=[1,2,3,4,6]
console.log(arr.splice(4,0,5))//4为开端下标  0为删去元素个数  5为新增元素
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

splice()的回来值是一个删去元素的新数组,假如没有删去元素,则回来一个空数组。

//删
const arr=[1,2,3,4,6]
console.log(arr.splice(12))//1为开端下标  0为删去元素个数 
console.log(arr)
const arr=[1,2,3,4,6]
console.log(arr.splice(1))//1为开端下标,删去一切元素
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
从下标1开端,删去两个元素,回来值为删去元素的数组。

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
从下标1开端删去一切元素。回来值为被删去的数组。

const arr = [1, 2, 3, 4, 4, 6]
console.log(arr.splice(4, 1, 5))//4为开端下标  0为删去元素个数 
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

从下标4开端,删去一个元素,并刺进一个元素 回来值为删去元素的数组

语法

splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)

用splice能够完成增的办法,可是实质为删去,增加元素。

  • concat() concat() 办法用于兼并两个或多个数组。此办法不会更改现有数组,而是回来一个新数组
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
console.log(array3);
console.log(array1)
console.log(array2)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
将两个数组拼接起来也属于数组增长的办法

数组上删的办法

  • pop() pop() 办法从数组中删去最终一个元素,并回来该元素的值。此办法会更改数组的长度。
let arr = [1, 2, 3, 4]
console.log(arr.pop())
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • shift() shift() 办法从数组中删去第一个元素,并回来该元素的值。此办法更改数组的长度。

let arr = [1, 2, 3, 4]
console.log(arr.shift())
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • splice()能够完成删的功用,上面已列出,此处不赘叙。

  • slice() slice() 办法回来一个新的数组目标,这一目标是一个由startend决定的原数组的浅复制(包括start,不包括end),其间startend代表了数组元素的索引。原始数组不会被改动。

let arr = [1, 2, 3, 4, 5]
console.log(arr.slice(1))
console.log(arr.slice(2, 4))

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
区间左闭右开,回来的是一个新的数组目标,不会修正原数组。实用性强,能够截取想要的数组段且不改动原数组。

数组上改的办法

  • reverse reverse() 办法就地回转数组中的元素,并回来同一数组的引证。数组的第一个元素会变成最终一个,数组的最终一个元素变成第一个。换句话说,数组中的元素次序将被翻转,变为与之前相反的方向。
let arr=[1,2,3]
console.log(arr.reverse())
consle.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
很明显,reverse()的作用是回转数组且改动原数组。回来值为原数组的新的引证。

  • sort() sort() 办法就地对数组的元素进行排序,并回来对相同数组的引证。默许排序是将元素转换为字符串,然后依照它们的 UTF-16 码元值升序排序。
let arr=[1,4,6,3,7,9]
arr.sort((a,b)=>a-b)
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
sort()里边能够承受一个回调函数,两个参数,依照参数的次序,a-b为从小到大排序,b-a为从大到小排序,承受参数则然后依照它们的 UTF-16 码元值升序排序。若存在负数,负数的UTF-16值越小UTF-16越大会呈现排序犯错。所以最好是承受回调函数。

let arr = [1, 4, 6, 3, 7, 9]
arr.sort((a, b) => b - a)
console.log(arr)

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

数组上查的办法

  • indexOf() indexOf() 办法回来数组中第一次呈现给定元素的下标,假如不存在则回来 -1。
let arr=[1,2,2,3,3]
console.log(arr.indexOf(2))
console.log(arr)
  • lastIndexOf() lastIndexOf() 办法回来数组中给定元素最终一次呈现的索引,假如不存在则回来 -1。该办法从fromIndex开端向前搜索数组。
let arr[1,2,3,4,1]
console.log(arr.lastIndexOf(1))

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • filter() filter() 办法创立给定数组一部分的浅复制,其包括经过所供给函数完成的测试的一切元素。
const words = ['spray', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter((word) => word.length > 6);
console.log(result);

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • find() 办法回来数组中满足供给的测试函数的第一个元素的值。否则回来undefined
const array1 = [5, 12, 8, 130, 44];
const found = array1.find((element) => element > 10);
console.log(found);

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?
能够看到它是回来供给符合测试函数的第一个元素值

  • includes includes() 办法用来判断一个数组是否包括一个指定的值,根据状况,假如包括则回来true,否则回来false。能够看到它的回来是一个布尔值。
const array1 = [1, 2, 3];
console.log(array1.includes(2));

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

数组中的转换

  • join() join() 办法将一个数组(或一个类数组目标)的一切元素连接成一个字符串并回来这个字符串,用逗号或指定的分隔符字符串分隔。假如数组只有一个元素,那么将回来该元素而不运用分隔符。
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

数组上面的迭代

  • forEach() forEach() 办法对数组的每个元素履行一次给定的函数。
const array1 = ['a', 'b', 'c'];
array1.forEach((element) => console.log(element));

面试官让你谈谈,js数组上面的办法  怎么具体的列出一切的办法呢?

  • reduce() reduce() 办法对数组中的每个元素按序履行一个供给的reducer函数,每一次运行reducer会将先前元素的计算成果作为参数传入,最终将其成果汇总为单个回来值。

第一次履行回调函数时,不存在“上一次的计算成果”。假如需要回调函数从数组索引为 0 的元素开端履行,则需要传递初始值。否则,数组索引为 0 的元素将被用作初始值,迭代器将从第二个元素开端履行(即从索引为 1 而不是 0 的方位开端)。

const array1 = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (accumulator, currentValue) => accumulator + currentValue,
  initialValue,
);
console.log(sumWithInitial);
// Expected output: 10

Array.from()

Array.from() 静态办法从可迭代类数组目标创立一个新的浅复制的数组实例。

console.log(Array.from('foo'));
// Expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], (x) => x + x));
// Expected output: Array [2, 4, 6]

能够将类数组转变为数组。

参考文献

本文章数组上面的办法的名词解释和部分实例取自MDN web Docs。