ZBLOG

useEffect(() => { if (!initData || !initData?.serviceDetailList?.length) return let arrFilter = [] //选中的服务 initData?.serviceDetailList?.forEach((item) => { //已选数量 const selectedCount = item.serviceList.filter((service) => {...

要按照倒序将元素推入 arrFilter 数组,你可以在使用 push 方法之前反转数组,或者直接在添加新项时插入到数组的开头。以下是对你的代码进行调整后的版本,展示了如何将选中的服务按倒序推入 arrFilter

你可以通过使用 unshift 方法来实现这一点,这样会将元素添加到数组的开头:

  1. useEffect(() => {
  2. if (!initData || !initData?.serviceDetailList?.length) return;
  3. let arrFilter = []; // 选中的服务
  4. initData.serviceDetailList.forEach((item) => {
  5. // 已选数量
  6. const selectedCount = item.serviceList.filter((service) => {
  7. if (service.num) {
  8. arrFilter.unshift({ // 使用 unshift 添加到开头
  9. category: item?.category,
  10. categoryName: item?.categoryName,
  11. serviceId: service?.serviceId,
  12. goodsId: service?.goodsId,
  13. goodsAmount: Number(item?.serviceValue) ? Number(item?.serviceValue) : 0,
  14. serviceName: service?.serviceName,
  15. serviceNum: service?.num,
  16. subSelectList: service?.subSelectList || [],
  17. });
  18. return true; // 修改为 true,使其计算已选择数量
  19. }
  20. return false; // 当 num 不存在时返回 false
  21. }).length;
  22. if (serviceItem?.category === item.category) {
  23. item.serviceList.forEach((service) => {
  24. // 分类下服务种类数量上限 -1 未设置种类限制
  25. if (selectedCount >= item?.categoryLimit && item.categoryLimit !== -1) {
  26. console.log(`${item.category} 达到上限`);
  27. if (!service.num) {
  28. service.categoryDisabled = true;
  29. }
  30. } else {
  31. service.categoryDisabled = false;
  32. }
  33. });
  34. // 某项服务可选数量上限
  35. item.serviceList.forEach((service) => {
  36. // orderLimit
  37. if (service.num >= service.orderLimit) {
  38. service.serviceDisabled = true;
  39. } else {
  40. service.serviceDisabled = false;
  41. }
  42. });
  43. }
  44. });
  45. arrFilter.forEach((item) => {
  46. item.subSelectList.forEach((item1) => {
  47. item1.subNode[0].serviceName = 1;
  48. });
  49. });
  50. console.log('初始化initData', initData);
  51. console.log(`'arrFilter`, arrFilter);
  52. setSelectedItemList(arrFilter);
  53. }, [initData]);

修改点:

  1. 使用 unshift:将每个符合条件的对象使用 unshift 推送到 arrFilter 的开头。
  2. 逻辑改进:确保在筛选器中返回正确的布尔值,以便计算已选择的数量。

这样处理后,最终得到的 arrFilter 将是按倒序排列的。如果需要保持特定顺序,则还需要考虑其他因素(如原始数据顺序)。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20833

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?