您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

数组过滤,一定要考虑性能,一定要考虑性能,一定要考虑性能,数据量10w

数组过滤,一定要考虑性能,一定要考虑性能,一定要考虑性能,数据量10w

const data = Array.from({ length: 100 }).map((item, index) => index + 1);

const filter = [
  {
    start: 2,
    end: 25,
  },
  {
    start: 27,
    end: 55,
  },
  {
    start: 58,
    end: 99,
  },
];

期望结果,

[1,26,56,57,100]
const data = Array.from({ length: 100 }).map((item, index) => index + 1);

const filter = [
  {
    start: 2,
    end: 25,
  },
  {
    start: 37,
    end: 55,
  },
  {
    start: 58,
    end: 99,
  },
];

const result = [];

let fi = 0;
let flag = false;

for (let index = 0; index < data.length ; index++) {
  const item = filter[fi];

  if (isOk(data[index], item)) {
    flag = true;
  } else if (filter[fi + 1] && isOk(data[index], filter[fi + 1])) {
    fi++;
  } else {
    flag = false;
    result.push(data[index]);
  }
}

function isOk(data, item) {
  if (!item) {
    return true;
  }
  const { start, end } = item;
  return data >= start && data <= end;
}

console.log("result", result);
javascript 2022/2/18 19:31:24 有540人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶