替换 Javascript 中嵌套对象中的数组

Replace array in nested object in Javascript

我一天中的大部分时间都在尝试替换现有嵌套对象的数组,但我不知道该怎么做。这是我的原始对象:

{
  "id": "a8df1653-238a-4f23-fe42-345c5d928b34",
  "webSections": {
    "id": "x58654a9-283b-4fa6-8466-3f7534783f8",
    "sections": [
      {
        "id": "92d7e428-4a5b-4f7e-bc7d-b761ca018922",
        "title": "Websites",
        "questions": [
          { 
            id: 'dee6e3a6-f207-f3db-921e-32a0b745557', 
            text: 'Website questions', 
            items: Array(11)
         }
        ]
      },
      {
        "id": "79e42d88-7dd0-4f70-b6b4-dea4b4a64ef3",
        "title": "Blogs",
        "questions": [
          ...
        ]
      },
      {
        "id": "439ded88-d7ed0-de70-b6b4-dea4b4a64e840",
        "title": "App questions",
        "questions": [
          ...
        ]
      }
    ]
}

我想替换原始对象或其副本中的问题数组。

const newMenu = [
{id: '34bb96c7-1eda-4f10-8acf-e6486296f4dd', text: 'Website questions', items: Array(24)},
{id: '520c2d3f-6117-4f6a-904f-2477e3347472', text: 'Blog questions', item: Array(7)},
{id: '302b658a-9d8c-4f53-80f6-3f2275bfble', title: 'App questions', items: Array(14)}
]

我正在尝试通过其索引来执行此操作,但不幸的是它不起作用。

 webSections.sections.forEach((item, index) => {
   return webSections.sections[index].questions, newMenu[index]);
 }

有人看到我哪里做错了吗?

传递给 forEach 的回调返回的值将不会在任何地方使用。

如果您想避免改变原始对象和更新问题,您可以使用 Array.prototype.map 和对象传播语法。

const object = {
  "id": "a8df1653-238a-4f23-fe42-345c5d928b34",
  "webSections": {
    "id": "x58654a9-283b-4fa6-8466-3f7534783f8",
    "sections": [
      {
        "id": "92d7e428-4a5b-4f7e-bc7d-b761ca018922",
        "title": "Websites",
        "questions": [
          { 
            id: 'dee6e3a6-f207-f3db-921e-32a0b745557', 
            ...

const updatedObject = {
 ...object,
 webSections: {
  ...object.webSections,
  sections: object.webSections.sections.map((section, index) => ({...section, questions: newMenu[index]}))
 }
}

如果你只想改变原始对象

object.webSections.sections.forEach((_, index) => {
 section.questions = newMenu[index]
})
    const newSections = myObj.webSections.sections.map((obj, index) => {
        const newQuestions = newItems[index];
        return {
            ...obj,
            questions: [newQuestions],
        };
    });

    console.log(newSections);

MyObj 是主要对象。 这将生成新的部分数组,您可以将它与我想的主要对象组合...

@Ramesh Reddy 的回答最彻底。

如果您不关心突变,最简单的方法是:

myObject.webSections.sections.forEach((section, index) => {
  section.questions = newMenu[index].items;
})

您使用的 'forEach' 语法错误。检查MDN它是如何使用的。