仅循环遍历一个对象 returns 第一个对象

Looping through an object only returns the first object

我正在尝试重塑一些要在 table 中使用的数据。为此,我在一个数组上进行映射,然后循环遍历其中的一个对象,以创建一个包含我想要的数据的新对象。我遇到的问题是,如果对象内部包含多个对象,我只会为第一个项目获得一个新对象。

我正在尝试为每个包含在 changedProperties

中的对象获取一个新对象

有人能帮忙吗? / 解释一下?

这是一个工作示例:

const MOCK_DATA = [
  {
    triggeredByID: "d5ae18b7eb6f",
    triggeredByName: "name",
    changedProperties: {
      LastName: {
        __oldValue: "Mallory",
        __newValue: "Mallorie",
      },
      Suffix: {
        __oldValue: "DO",
        __newvValue: "NP",
      },
    },
    createdAt: "2022-06-01T10:20:21.329337652Z",
  },
  {
    triggeredByID: "d5ae18b7eb6f",
    triggeredByName: "John",
    changedProperties: {
      State: {
        __oldValue: ["TX", "AL"],
        __newValue: ["TX", "AL", "FL"],
      },
      City: {
        __oldValue: "Austin",
        __newValue: "San Antonio",
      },
    },
    createdAt: "2022-06-01T10:20:21.329337652Z",
  },
];

const changedProperties = MOCK_DATA.map((item, idx) => {
    for (const [key, value] of Object.entries(item.changedProperties)) {
      return {
        field: key,
        old: item.changedProperties[key].__oldValue,
        new: item.changedProperties[key].__newValue,
        name: item.triggeredByName,
        createdAt: item.createdAt,
      };
    }
  });
  
  console.log(changedProperties)

是的,如果您在 for-loop 中 return,它的作用域就是函数。这意味着您将从循环的第一次迭代中的整个函数 return 。试试这个:

const changedProperties = MOCK_DATA.map((item, idx) => {
   return Object.entries(item.changedProperties).map(([key, value]) => {
      return {
        field: key,
        old: item.changedProperties[key].__oldValue,
        new: item.changedProperties[key].__newValue,
        name: item.triggeredByName,
        createdAt: item.createdAt,
      };
    }
  });
  
  console.log(changedProperties)