首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react中使用foreach显示其他颜色值

如何在react中使用foreach显示其他颜色值
EN

Stack Overflow用户
提问于 2021-06-25 09:26:09
回答 1查看 24关注 0票数 1

下面是示例代码:https://stackblitz.com/edit/react-hook-zwgypv

代码语言:javascript
复制
const SIZES = ['_2x', '_3x', '_4x', 'l', 'm', 's', 'xl', 'xs', 'xxs'];

const data = [
  {
    color: 'red',
    _1x: 0,
    _2x: 12,
    _3x: 0,
    _4x: 0,
    xxs: 0,
    xs: 0,
    s: 0,
    m: 0,
    l: 0,
    xl: 0
  },
  {
    color: 'red',
    _1x: 0,
    _2x: 0,
    _3x: 0,
    _4x: 12,
    xxs: 0,
    xs: 0,
    s: 0,
    m: 0,
    l: 0,
    xl: 0
  },
  {
    color: 'pink',
    _1x: 0,
    _2x: 0,
    _3x: 0,
    _4x: 0,
    xxs: 0,
    xs: 0,
    s: 0,
    m: 0,
    l: 14,
    xl: 0
  },
  {
    color: 'red',
    _1x: 0,
    _2x: 0,
    _3x: 0,
    _4x: 0,
    xxs: 0,
    xs: 0,
    s: 0,
    m: 0,
    l: 14,
    xl: 0
  },
  {
    color: 'pink',
    _1x: 0,
    _2x: 0,
    _3x: 0,
    _4x: 0,
    xxs: 0,
    xs: 0,
    s: 14,
    m: 0,
    l: 0,
    xl: 0
  },
  {
    color: 'yellow',
    _1x: 0,
    _2x: 0,
    _3x: 0,
    _4x: 0,
    xxs: 0,
    xs: 0,
    s: 0,
    m: 0,
    l: 0,
    xl: 12
  }
];
const result = Object.values(
      data.reduce((acc, { color, size, ...rest }) => {
        acc[color] = { color };
        Object.keys(rest).forEach(key => {
          acc[color][key] = (acc[color][key] || 0) + rest[key];
        });
        return acc;
      }, {})
    );

    console.log(result);

如何根据颜色显示其他值?它没有显示其他大小的红色,它将合计相同的大小。我想要做的是显示其他大小的红色。

此照片中的示例^它将显示_2x的大小,然后将129相加等于21

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 09:49:06

问题出在您的reduce中,您在每次遍历时将acc[color]重置为{ color },因此它永远不会有以前的值。你只需要在关键点还不存在的第一次设置颜色。你可以在下面更新你的reduce:

代码语言:javascript
复制
const result = Object.values(
  data.reduce((acc, { color, size, ...rest }) => {
    if (!acc.hasOwnProperty(color)) {
      acc[color] = {
        color,
        ...rest
      };
      return acc;
    }

    Object.keys(rest).forEach(key => {
      acc[color][key] = (acc[color][key] || 0) + rest[key];
    });

    return acc;
  }, {})
);

更新的代码示例如下:https://stackblitz.com/edit/react-hook-arh5yz

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68124346

复制
相关文章

相似问题

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