【问题标题】:Need to copy 2 keys out of object and put it in parent object需要从对象中复制 2 个键并将其放入父对象中
【发布时间】:2021-12-28 07:29:26
【问题描述】:

我正在尝试操作一组对象。这是一棵大树,你可以在下面看到。

我想在products 数组的零索引处获取lald 的键值,并将它们放在c 旁边(在dop 数组中)。

请在 cmets 中找到我的 codepen 链接,不知道为什么我无法在此处共享 code pen 链接

const arr = [
  {
    a: 1,
    dop: [
      {
        c: 3,
        //la: 11,
        //ld: 33
        products: [
          { ld: 11, la: 33 }, // <--- zero index
          { ld: 233, la: 44 } // <--
        ]
      },

      { d: 4, e: 4 }
    ]
  },

  {
    a: 1,
    dop: [
      {
        c: 3,
        //la: 11,
        //ld: 33
        products: [
          { ld: 11, la: 33 },
          { ld: 233, la: 44 }
        ]
      },

      { d: 4, e: 4 }
    ]
  }
];

【问题讨论】:

  • 欢迎来到 Stack Overflow!访问help center,使用tour 查看内容和How to Ask。如果遇到困难,请发布您的尝试的minimal reproducible example,并使用[&lt;&gt;] sn-p 编辑器记录输入和预期输出。请不要发布代码图片,并尝试将示例保留在 SO
  • 这里不允许链接到没有代码的 codepen 和 jsfiddle 是有原因的
  • 有什么问题?
  • 到目前为止您尝试过什么?有什么方法可以满足您的需求吗?为了帮助您,您必须在代码中添加一些 sn-p
  • Codepen.io/feizel/pen/porqaBO

标签: javascript arrays object ecmascript-6


【解决方案1】:

移动还是复制?

我在这里复制

const arr = [{ a: 1, dop: [{ c: 3, products: [{ ld: 11, la: 33 }, { ld: 233, la: 44 } ] }, { d: 4, e: 4 } ] }, { a: 1, dop: [{ c: 3, products: [{ ld: 11, la: 33 }, { ld: 233, la: 44 } ] }, { d: 4, e: 4 } ] } ];

arr.forEach(item => Object.assign(item.dop[0],item.dop[0].products[0]))
console.log(arr)

【讨论】:

  • #mplyngjan 请检查我评论中的代码笔链接,您的代码给出了未定义的值
【解决方案2】:

使用map 和解构

const process = (data) =>
  data.map(({ dop, ...rest }) => {
    return {
      ...rest,
      dop: dop.map(({ products, ...dopRest }) => {
        const [{ ld, la }] = products ?? [{}];
        return {
          ...dopRest,
          ld,
          la,
          products,
        };
      }),
    };
  });

const arr = [
  {
    a: 1,
    dop: [
      {
        c: 3,
        //la: 11,
        //ld: 33
        products: [
          { ld: 11111, la: 11111 }, // <--- zero index
          { ld: 233, la: 44 },
          { ld: 233, la: 44 },
          { ld: 233, la: 44 },
        ],
      },

      { d: 4, e: 4 },
    ],
  },

  {
    a: 2,
    dop: [
      {
        c: 3,
        //la: 11,
        //ld: 33
        products: [
          { ld: 222222, la: 222222 }, // <--- zero index
          { ld: 233, la: 44 }, // <--
        ],
      },

      { d: 4, e: 4 },
    ],
  },
  {
    a: 2,
    dop: [
      {
        c: 3,
        //la: 11,
        //ld: 33
        products: [
          { ld: 333333, la: 3333333 }, // <--- zero index
          { ld: 233, la: 44 }, // <--
        ],
      },

      { d: 4, e: 4 },
    ],
  },
];

console.log(process(arr));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多