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

如何将按奇偶索引拆分后的两个数组合并回原数组?

合并奇偶索引拆分后的数组回到原数组

既然你已经用LINQ按奇偶索引把数组拆成了aEven和aOdd,而且保证两个数组长度相同,这里有几种优雅的方式把它们合并回原数组,完全不用修改拆分后的两个数组:

方法一:用Zip + SelectMany(最简洁的LINQ方式)

利用Zip方法把两个数组的对应元素配对,再通过SelectMany把每一对元素平铺成一个连续的数组:

int[] aEven = new[] { 1, 7 };
int[] aOdd = new[] { 3, 8 };

int[] originalArray = aEven.Zip(aOdd, (evenVal, oddVal) => new[] { evenVal, oddVal })
                           .SelectMany(pair => pair)
                           .ToArray();

执行后originalArray就是{1, 3, 7, 8},完美还原原数组。这个方法的逻辑很直观:Zip会把aEven[0]和aOdd[0]配对、aEven[1]和aOdd[1]配对,每个配对生成一个包含两个元素的小数组,最后SelectMany把所有小数组拼接成一个大数组。

方法二:通过索引遍历生成

如果你更喜欢基于索引的逻辑,可以用Enumerable.Range生成原数组的所有索引,然后根据索引的奇偶性从对应的数组中取值:

int[] originalArray = Enumerable.Range(0, aEven.Length * 2)
                               .Select(index => 
                                   index % 2 == 0 ? aEven[index / 2] : aOdd[index / 2])
                               .ToArray();

这里因为两个数组长度相同,原数组长度就是aEven.Length * 2,遍历每个索引时,偶数索引对应aEven的第index/2个元素,奇数索引对应aOdd的第index/2个元素,逻辑清晰易懂。

两种方法都符合你的需求:不修改aEven和aOdd,代码简洁优雅,而且能准确还原原数组的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:21:52