You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按长度升序遍历多个不同长度的列表?求简便实现方案

简便实现按列表长度升序遍历的方案

当然有更省心的实现方式啦!不用再手动逐个编写forEach并调整顺序,我们可以通过整合列表与处理逻辑+自动排序的方式来实现,具体分两种场景:

场景1:每个列表的处理逻辑不同

如果每个list_x.forEach(...)里的回调函数逻辑不一样,我们可以把列表和对应的处理函数配对,再按列表长度排序后执行:

// 1. 把所有列表和对应的处理函数配对存储
const listHandlerPairs = [
  { list: list_6, handler: (item) => { /* 这里写list_6的处理逻辑 */ } },
  { list: list_3, handler: (item) => { /* 这里写list_3的处理逻辑 */ } },
  { list: list_2, handler: (item) => { /* 这里写list_2的处理逻辑 */ } },
  { list: list_4, handler: (item) => { /* 这里写list_4的处理逻辑 */ } },
  { list: list_5, handler: (item) => { /* 这里写list_5的处理逻辑 */ } },
  { list: list_1, handler: (item) => { /* 这里写list_1的处理逻辑 */ } },
];

// 2. 按列表长度升序排序
listHandlerPairs.sort((a, b) => a.list.length - b.list.length);

// 3. 依次遍历每个列表并执行对应处理逻辑
listHandlerPairs.forEach(({ list, handler }) => {
  list.forEach(handler);
});

这样一来,哪怕后续列表的长度变化或者新增/删除列表,都不需要手动调整遍历顺序,排序逻辑会自动帮你处理。

场景2:所有列表的处理逻辑相同

如果所有列表的forEach回调逻辑是一致的,那就更简单了:

// 1. 收集所有列表到一个数组中
const allLists = [list_1, list_2, list_3, list_4, list_5, list_6];

// 2. 按列表长度升序排序
allLists.sort((a, b) => a.length - b.length);

// 3. 统一遍历处理
allLists.forEach(list => {
  list.forEach(item => {
    /* 这里写所有列表共用的处理逻辑 */
  });
});

这种方式代码更简洁,适合处理逻辑统一的场景。

内容的提问来源于stack exchange,提问作者Quentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:38:11