按指定字符数动态拆分数组的技术需求
数组按指定累计字符数动态拆分实现方案
嘿,我来帮你搞定这个数组拆分的问题!根据你的需求,我们要把数组按累计字符数不超过指定值(示例为10)来动态分组,第一个组存累计字符数符合要求的元素,剩余元素全部存入新变量m。下面我用两种常用语言给你写实现,逻辑清晰易懂,还能直接复用~
核心规则回顾
- 数组中每个元素的长度都不超过指定字符数(示例为10)
- 当累计字符数达到10时,后续所有元素直接存入变量
m
JavaScript 实现示例
// 测试数组 const testArray = ["apple", "banana", "pear", "orange"]; const maxAllowedChars = 10; // 指定的累计字符上限 let validGroup = []; // 存累计字符数≤10的元素 let currentTotalChars = 0; let m = []; // 存剩余元素 for (const item of testArray) { // 预判加入当前元素后的总字符数 const newTotal = currentTotalChars + item.length; if (newTotal <= maxAllowedChars) { // 未超上限,加入当前组并更新计数 validGroup.push(item); currentTotalChars = newTotal; } else { // 超过上限,剩余元素全部放入m,终止循环 m = testArray.slice(testArray.indexOf(item)); break; } } console.log("符合要求的分组:", validGroup); console.log("剩余元素变量m:", m);
逻辑说明
- 初始化三个变量:
validGroup存合规元素,currentTotalChars跟踪累计字符数,m存剩余元素 - 遍历数组时,先计算加入当前元素后的总字符数
- 若总字符数未超上限,就把元素加入
validGroup并更新计数 - 一旦总字符数超标,就把从当前元素开始的所有剩余元素赋值给
m,直接终止循环(因为后续元素只会让累计数更大)
Python 实现示例
如果你用Python,逻辑完全一致,代码如下:
test_array = ["apple", "banana", "pear", "orange"] max_allowed_chars = 10 valid_group = [] current_total_chars = 0 m = [] for index, item in enumerate(test_array): new_total = current_total_chars + len(item) if new_total <= max_allowed_chars: valid_group.append(item) current_total_chars = new_total else: m = test_array[index:] break print("符合要求的分组:", valid_group) print("剩余元素变量m:", m)
测试场景验证
举两个不同的测试例子,看看效果:
- 测试数组
["cat", "dog", "fish", "bird"]:"cat"(3)+"dog"(3)+"fish"(4)=10刚好达标,所以validGroup是["cat", "dog", "fish"],m是["bird"] - 测试数组
["hello", "world"]:"hello"(5)+"world"(5)=10刚好达标,m为空数组
这样就能完美满足你的动态拆分需求啦,不管数组元素怎么变化,都会自动调整分组,确保第一组累计字符数不超过指定值~
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

