Skip to content

数组相关

约 223 字小于 1 分钟

手撕前端

2025-08-30

借助set

function unique1(arr) {
  return Array.from(new Set(arr));
}

function unique2(arr) {
  return [...new Set(arr)];
}

使用过滤器

function unique3(arr) {
  return arr.filter((item, index) => arr.indexOf(item) === index);
}

使用reduce

function unique4(arr) {
  return arr.reduce((acc, cur) => {
    if (!acc.includes(cur)) {
      acc.push(cur);
    }
    return acc;
  }, []);
}

借助新数组

function unique5(arr) {
  let result = [];
  arr.forEach((element) => {
    if (!result.includes(element)) {
      result.push(element);
    }
  });
  return result;
}

数组扁平化

reduce+递归

function flatten1(arr) {
  return arr.reduce((acc, cur) => {
    return acc.concat(Array.isArray(cur) ? flatten1(cur) : cur);
  }, []);
}

递归

function flatten2(arr) {
  let result = [];
  arr.forEach((item) => {
    if (Array.isArray(item)) {
      result = result.concat(flatten2(item));
    } else {
      result.push(item);
    }
  });
  return result;
}

先转换成字符串再转换成数组

function flatten3(arr) {
  return arr
    .toString()
    .split(",")
    .map((item) => parseInt(item));
}
function flatten4(arr) {
  return arr
    .join(",")
    .split(",")
    .map((item) => parseInt(item));
}

数组乱序

贡献者

PinkDopeyBug

公告

本博客内容原本使用obsidian编写,由于没有仔细配置,以至图片引用使用obsidian风格。

且图片存储路径频繁变更导致部分文章图片无法正常显示。

为您带来不便请谅解。

ps:贡献者一直都只有wynnsimon一人,显示Pink的贡献者是因为我没好好配置git。后面因为懒就没一个个修改。如果被提及的人不希望被显示可以联系我我会立即删除。