为了账号安全,请及时绑定邮箱和手机立即绑定

如果有重复的JS,不要重复显示相同的项目

如果有重复的JS,不要重复显示相同的项目

陪伴而非守候 2022-10-27 15:05:56
您好,感谢您花时间回答我的问题。所以有上下文:我创建了一个 API。 我这样显示数据: [1]:https ://i.stack.imgur.com/lJ064.png不过,我只想在运动鞋名称上方显示日期(例如:2020-07-04)所以如果运动鞋有相同的日期,我想删除包含日期的换句话说,我想拥有这个:https://i.stack.imgur.com/aFiXO.png所以我尝试了:实际上我知道如何从数组中删除重复数据,但在这种情况下不想删除它,我只想显示一次:)你有什么思路吗?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可能想要做的是将数据分组而不是过滤/删除项目。


所以如果你从一个形状开始


[

  {name: 'bloodline', date: '2020-07-04' },

  {name: 'celtics', date: '2020-07-04' },

  {name: 'air dior', date: '2020-07-08' },

  {name: 'bloodline 2.0', date: '2020-07-08' },

]

你可能想把它改成类似


{

  '2020-07-04': [

    {name: 'bloodline', date: '2020-07-04' },

    {name: 'celtics', date: '2020-07-04' },

  ],

  '2020-07-08': [

    {name: 'air dior', date: '2020-07-08' },

    {name: 'bloodline 2.0', date: '2020-07-08' },

  ]

}

或者嵌套数组可能更容易在反应中使用


[

  {

    date: '2020-07-04',

    items: [

      {name: 'bloodline', date: '2020-07-04' },

      {name: 'celtics', date: '2020-07-04' },

    ],

  }, {

    date: '2020-07-08',

    items: [

      {name: 'air dior', date: '2020-07-08' },

      {name: 'bloodline 2.0', date: '2020-07-08' },

    ]

  }

]

然后您将映射项目并仅渲染对象键或外部date

Lodash 有一个groupBy你可以使用的函数(https://lodash.com/docs/#groupBy),或者这里是一个独立的实现


查看完整回答
反对 回复 2022-10-27
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

假设您的 API 的响应是这样的:


const data = [

  {

    title: 'bloodline',

    date: '2020-07-04'

  }, {

    title: 'celtics',

    date: '2020-07-04'

  }, {

    title: 'air dior',

    date: '2020-07-08'

  }

];

然后你可以使用LoDash 的 groupBy方法并做这样的事情:


const data = [

  {

    title: 'bloodline',

    date: '2020-07-04'

  }, {

    title: 'celtics',

    date: '2020-07-04'

  }, {

    title: 'air dior',

    date: '2020-07-08'

  }

];


const grouped = _.groupBy(data, 'date');


for (let date in grouped) {

  // display date here

  console.log(date);

  

  for (let item of grouped[date]) {

    // display each item title here

    console.log(item.title);

  }

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

注意:由于您没有提供任何源代码,很可能您需要根据您的用例调整此代码段,但这可能是解决它的起点。


查看完整回答
反对 回复 2022-10-27
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号