首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下一个getStaticPaths参数的嵌套映射

下一个getStaticPaths参数的嵌套映射
EN

Stack Overflow用户
提问于 2021-10-01 21:00:22
回答 2查看 30关注 0票数 0

假设你的数据结构是这样的:

代码语言:javascript
复制
data = {
  "cse": {
    "first": [
      "Computer Hardware Essentials",
      "Computer System Essentials",
      "Cultural Education"
    ],
    "second": [
      "Discrete Mathematics",
      "Linear Algebra",
      "Engineering Physics - A",
    ],
    "third": [
      "Numerical Methods",
      "Optimization Techniques",
      "Digital Electronics",
    ],
    "fourth": [
      "Probability and Random Processes",
      "Data Structures and Algorithms",
      "Theory of Computation"
   ]
     }
   }

并且您有以下路由/[semester]/[subject],因此Next.js结构文件夹为:[semester]/[subject].js

我们将如何集成数据,以便在单个嵌套循环中获得getStaticPaths参数?

所需数据:

代码语言:javascript
复制
[
{ params: {semester: "first", subject: "computer-hardware-essentials"}},
{ params: {semester: "first", subject: "computer-system-essentials"}},
{ params: {semester: "first", subject: "cultutal-education"}},
{ params: {semester: "second", subject: "discrete-mathemetics"}},
{ params: {semester: "second", subject: "linear-algebra"}},
{ params: {semester: "second", subject: "engineering-physics-a"}},
{ params: {semester: "third", subject: "numerical-methods"}},
{ params: {semester: "third", subject: "optimization-techniques"}},
{ params: {semester: "third", subject: "digital-electronics"}},
{ params: {semester: "fourth", subject: "probability-and-random-process"}},
{ params: {semester: "fourth", subject: "data-structure-and-algorithms"}},
{ params: {semester: "fourth", subject: "theory-of-computation"}}
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-01 21:19:25

使用for...in遍历对象,然后使用forEach循环内部数组,将每个主题添加到一个数组中:

代码语言:javascript
复制
const results = [];
for (const x in data.cse) {
  data.cse[x].forEach((s) => {
    results.push({
      params: {
        semester: x,
        subject: s
      }
    });
  });
}

代码语言:javascript
复制
const data = {
  "cse": {
    "first": [
      "Computer Hardware Essentials",
      "Computer System Essentials",
      "Cultural Education"
    ],
    "second": [
      "Discrete Mathematics",
      "Linear Algebra",
      "Engineering Physics - A",
    ],
    "third": [
      "Numerical Methods",
      "Optimization Techniques",
      "Digital Electronics",
    ],
    "fourth": [
      "Probability and Random Processes",
      "Data Structures and Algorithms",
      "Theory of Computation"
    ]
  }
}

const results = [];
for (const x in data.cse) {
  data.cse[x].forEach((s) => {
    results.push({
      params: {
        semester: x,
        subject: s
      }
    });
  });
}

console.info(results);

票数 1
EN

Stack Overflow用户

发布于 2021-10-01 21:26:47

使用函数式方法,您可以遍历data.cseentries,然后使用.flatMap进行链接

代码语言:javascript
复制
const result = Object.entries(data.cse).flatMap(([key, value]) => {
  return value.map(i => {
    return { 
      params: {
        semester: key,
        subject: i.toLowerCase().replaceAll(' ', '-')
      }
    }
  })
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69411935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档