如何在JavaScript数组映射中按自定义格式指定元素重复规则
这个需求完全可以实现,我们可以通过动态追踪当前名称的使用次数,匹配format规则完成映射:
let names = [ "chair", "table", "door", "window", "glass", "wine", "car", "keys", "dream", "keyboard", "vodka", "pepsi", "bag", "ikea", "mercedes", "soprano" ]; let format = [3, 3, 1, 5, 4, 4, 3, 5, 13, 10, 3, 5, 5, 2, 2, 10]; let dates = [ "2021-10-04T04:00:00.000Z", "2021-10-05T04:00:00.000Z", // 此处省略你原有的全部dates数组内容 "2022-01-18T04:00:00.000Z" ]; // 初始化状态追踪变量 let currentNameIdx = 0; // 当前使用的names数组索引 let usedCount = 0; // 当前名称已使用次数 let currentMaxCount = format[currentNameIdx]; // 当前名称最多可使用次数 const app_multiple = dates.map(date => { // 当当前名称使用次数达到上限时,切换到下一个名称 if (usedCount >= currentMaxCount) { currentNameIdx++; usedCount = 0; currentMaxCount = format[currentNameIdx]; } const res = { text: `LR${date}: ${names[currentNameIdx]}` }; usedCount++; return res; }); console.log(app_multiple);
说明
代码输出结构和你给出的示例完全一致,前3项对应chair,接下来3项对应table,以此类推完全匹配format规则。本场景下format数组总和为78,和dates数组长度完全一致,不会出现索引越界问题,如果后续调整数据可提前做长度校验避免异常。
内容的提问来源于stack exchange,提问作者chai1rm3n
相关产品推荐
相关产品推荐

