是否存在指定起始索引用小数组填充大数组的函数?
当然有啦!不同编程语言里都有对应的方法,甚至你可以自己快速实现一个符合需求的工具函数。我给你整理了几个常用语言的实现方案,完全匹配你的示例场景:
Python 实现
Python的列表切片操作天生就适合做这种填充,简洁又直观。如果要严格保证大数组长度不变(避免小数组过长导致大数组扩容),可以加个边界判断:
def fill_array(large_arr, small_arr, start_index): # 计算能容纳的最大元素个数,防止越界 max_fill_length = len(large_arr) - start_index actual_fill_length = min(len(small_arr), max_fill_length) # 替换对应切片位置的元素 large_arr[start_index:start_index+actual_fill_length] = small_arr[:actual_fill_length] return large_arr # 测试你的示例 a = [0, 0, 0, 0, 0] b = [1, 2, 3] fill_array(a, b, 0) print(a) # 输出: [1, 2, 3, 0, 0] b = [4, 5] fill_array(a, b, 3) print(a) # 输出: [1, 2, 3, 4, 5]
JavaScript 实现
JS里可以用Array.prototype.splice()方法来完成,它能直接在数组指定位置替换元素。同样,我们可以加个边界处理来保证大数组长度不变:
function fillArray(largeArr, smallArr, startIndex) { const availableLength = largeArr.length - startIndex; const takeLength = Math.min(smallArr.length, availableLength); // splice参数:起始位置、要删除的元素数、要插入的元素 largeArr.splice(startIndex, takeLength, ...smallArr.slice(0, takeLength)); return largeArr; } // 测试示例 let a = [0, 0, 0, 0, 0]; let b = [1, 2, 3]; fillArray(a, b, 0); console.log(a); // 输出: [1, 2, 3, 0, 0] b = [4, 5]; fillArray(a, b, 3); console.log(a); // 输出: [1, 2, 3, 4, 5]
Java 实现
Java中可以用原生的System.arraycopy()方法,这是效率很高的数组复制工具,专门用来处理这类数组内容替换的场景:
import java.util.Arrays; public class ArrayFillTool { public static void fillArray(int[] largeArr, int[] smallArr, int startIndex) { // 计算安全的复制长度,避免数组越界异常 int copyLength = Math.min(smallArr.length, largeArr.length - startIndex); // 源数组、源起始位置、目标数组、目标起始位置、复制长度 System.arraycopy(smallArr, 0, largeArr, startIndex, copyLength); } public static void main(String[] args) { int[] a = {0, 0, 0, 0, 0}; int[] b = {1, 2, 3}; fillArray(a, b, 0); System.out.println(Arrays.toString(a)); // 输出: [1, 2, 3, 0, 0] b = new int[]{4, 5}; fillArray(a, b, 3); System.out.println(Arrays.toString(a)); // 输出: [1, 2, 3, 4, 5] } }
内容的提问来源于stack exchange,提问作者Aditya Sane
相关产品推荐
相关产品推荐

