首页 > 解决方案 > 使用箭头函数使用嵌套数组更新 Object 中的字段

问题描述

我的对象嵌套数组遵循以下方式,

const values: any = {
    name: '',
    type: undefined,
    references: [
      {
        origin: {
          x1: true,
          x2: '',
          x3: undefined,
        },
      },
      {
        origin: {
          x1: true,
          x2: '',
          x3: undefined,
        },
      },
      {
        origin: {
          x1: true,
          x2: '',
          x3: undefined,
        },
      },
    ],
  };

我想用引用数组索引更新 x3 字段,如何使用 ES6 箭头函数来实现这一点。我写了一个函数,但它对我不起作用。如果有人可以纠正我的功能,那就太好了,

 export const replaceReferenceIndex = (values: any) => {
    return {
      ...values,
      references: values.references.map((reference.origin: any, x3: number) => ({
        ...reference.origin,
        x3,
      })),
    };
  };

标签: typescriptecmascript-6

解决方案


你只需要重写你map的回调函数:

const values = {
    name: '',
    type: undefined,
    references: [
        {
            origin: {
                x1: true,
                x2: '',
                x3: undefined,
            },
        },
        {
            origin: {
                x1: true,
                x2: '',
                x3: undefined,
            },
        },
            {
            origin: {
                x1: true,
                x2: '',
                x3: undefined,
            },
        },
    ],
};
  
const replaceReferenceIndex = (values) => ({
    ...values,
    references: values.references.map((ref, idx) => ({
        ...ref,
        origin: { ...ref.origin, x3: idx }
    })),
});      

console.log(replaceReferenceIndex(values))

我省略了类型注释,因为您显然不使用它们来检查正确性。


推荐阅读