将二维数组从锯齿状的二维数组复制到另一个锯齿状的二维数组中

时间:2016-07-25 09:15:01

标签: c# arrays jagged-arrays

我有像这样的锯齿状2D数据:

static void Main(string[] args)
    {
        int[][,] newArray = new int[2][,];

        int[][,] waypoints = new int[4][,]   
        {
            new int[,] {{6,3,4,5,6}},
            new int[,] {{1,3,4,5,6}},
            new int[,] {{1,4,3,2,1}},
            new int[,] {{6,3,4,5,6}}
        };

        int l = 0;
        int m = 0;

        for (int i = 0; i < waypoints.Length; i++)
        {
            for (int j = 0; j < waypoints[i].GetLength(0); j++)
            {
                for (int k = 0; k < waypoints[i].GetLength(1); k++)
                {
                    if (k == 1 || k == 3)
                    {
                        // waypoints[i][j,k].CopyTo(newArray[i][j,k]);
                    }
                    l++;
                    m++;
                }   
            }
        }
        Console.ReadKey();
    }

我需要从每个锯齿状数组中提取[0,1]和[0,3] 2D数组并将其存储在新的锯齿状数组中 - newArray。拜托,你能帮助我,怎么做非常感谢提前。

所需的输出应如下所示:

int[][,] newArray = new int[2][,];
{
     new int[,] {{3,5}},
     new int[,] {{3,5}},
     new int[,] {{4,2}},
     new int[,] {{3,5}}
 };

1 个答案:

答案 0 :(得分:1)

试试这个。请注意,我扩展了newArray的大小以容纳4个2D阵列。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication26
{
    class Program
    {
        static void Print3DArr(int[][,] arr)
        {
            foreach(var TwoDArr in arr)
            {
                for (int lineInd = 0; lineInd < TwoDArr.GetLength(0); lineInd++)
                {
                    for (int elemInd = 0; elemInd < TwoDArr.GetLength(1); elemInd++)
                    {
                        Console.Write(TwoDArr[lineInd, elemInd] + " ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
                Console.WriteLine();
            }
        }

        static void Main(string[] args)
        {
            int[][,] newArray = new int[4][,];

            int[][,] waypoints = new int[4][,]
            {
                new int[,] {{6,3,4,5,6}},
                new int[,] {{1,3,4,5,6}},
                new int[,] {{1,4,3,2,1}},
                new int[,] {{6,3,4,5,6}}
            };

            Print3DArr(waypoints);

            for (int TwoDArrIndex = 0; TwoDArrIndex < waypoints.Length; TwoDArrIndex++)
            {
                newArray[TwoDArrIndex] = new int[waypoints[TwoDArrIndex].GetLength(0), 2];

                for (int LineIn2DArr = 0; LineIn2DArr < waypoints[TwoDArrIndex].GetLength(0); LineIn2DArr++)
                {
                    newArray[TwoDArrIndex][LineIn2DArr, 0] = waypoints[TwoDArrIndex][LineIn2DArr, 1];
                    newArray[TwoDArrIndex][LineIn2DArr, 1] = waypoints[TwoDArrIndex][LineIn2DArr, 3];
                }
            }

            Print3DArr(newArray);
            Console.ReadKey();
        }
    }
}