初面网初面网

有关数组的题

如何判断是否是数组

假设arr是数组

  1. Array.isArray(arr)
  2. arr instanceof Array。instanceof判断能力不强
  3. Object.prototype.toString.call(arr).indexOf('Array')。indexOf方法可用可不用。用了之后返回值不是-1即可。数组的话应该会返回8
  4. Array.prototype.isPrototypeOf(arr)
  5. arr.constructor.toString().indexOf('Array')

slice、splice

slice用来截取,返回新数组。允许填入两个参数,slice(start, end)。数值可正可负。如果越界则返回空数组。

splice会改变原数组,返回删除的内容。splice(start,deleteCount, item1,item2,...)。如果不写item1等,会删除start下标开始,deleteCount大小的数组值;如果写了,则删除后会添加进item1等的值。

数组去重

  1. 使用new Set(arr)。但返回值是对象,有两种方法转为数组:[...new Set(arr)], Array.from(new Set(arr))。Array.from()是es6新增的方法。
  2. 使用自己写的逻辑去重(可以用sort先排序)
let arr = [1,3,5,42,3,5,11,28];

arr = arr.sort();

let arr1 = [];

for(let i = 0;i<arr.length;i++){
  if(arr[i] != arr[i-1]){
    arr1.push(arr[i]);
  }
}

console.log(arr1);

更新于 2025/2/26