You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用filter方法报Uncaught TypeError: work.filter is not a function如何解决

错误原因

你遇到的work.filter is not a function报错核心原因是调用filter的主体不是数组:

  • 你外层代码先对workExpArray执行了map遍历,遍历回调里拿到的work是workExpArray的单个元素,通常是工作经历对象,对象本身没有数组的filter方法,所以触发类型错误。
  • 除此之外你的代码还存在逻辑顺序错误、变量作用域错误的问题:你本来要做的是过滤整个workExpArray里符合行业要求的项,不需要先遍历单条再过滤;另外你后续判断用的workexp是filter回调内的局部变量,外层无法访问,运行会触发未定义报错。

修复后的代码示例

import workExpArray from "../Arrays/workExpArray.js";

const workx = document.querySelector(".workexp");

// 第一步:先过滤整个数组,拿到行业为Computing的所有项
const computingWorkList = workExpArray.filter(workexp => workexp.industry === "Computing")

// 第二步:遍历过滤后的数组生成DOM
const workElementList = computingWorkList.map(workexp => {
  const workExpArticle = document.createElement("article");
  workExpArticle.classList.add("workexp__article");
  workExpArticle.setAttribute("id", workexp.id);
  if (typeof workexp.secondaryRole === "string") {
    workExpArticle.innerHTML = `
      <SOME HTML HERE>
    `;
  } else {
    workExpArticle.innerHTML = `
      <MORE HTML HERE>
    `;
  }
  return workExpArticle
})

// 第三步:批量插入到页面
workElementList.forEach(el => workx.append(el))

额外优化提示

  • filter的回调只需要返回布尔值即可,不需要写多余的if else判断
  • 避免嵌套的map、filter调用,会增加代码理解成本和出错概率

内容的提问来源于stack exchange,提问作者livingtheOKlife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:48:04