两个数组的结构是完全一样的。[N][2]
按行比较,第一个元素做为Key,
A[0,0]=B[0,0]且A[0,1]=B[0,1]则认为A第0行与第0行"相同"
A[0,0]=B[0,0]且A[0,1]<>B[0,1]则认为A第0行与第0行"有点不同"
A[0,0]在B数组[N,0]中不存在的,则认为"完全不同"KEY在A,B数组中相对唯一,即在A中不存在相同的KEY。B同理。

解决方案 »

  1.   

    using System;
    using System.Collections; 
    namespace TableCompare
    {
         /// <summary>
        /// DictionaryBase字典类
        /// </summary>
        public class ClassOject : DictionaryBase 
        {
            /// <summary>
            /// 添加字典
            /// </summary>
            /// <param name="Key">键名称</param>
            /// <param name="Value">键值</param>
            public void Add(object Key, object Value)
            {
                Dictionary.Add(Key,Value);
            }
            /// <summary>
            /// 删除字典
            /// </summary>
            /// <param name="Key">键名称</param>
            public void Remove(object Key)
            {
                Dictionary.Remove(Key);
            }
            /// <summary>
            /// 是否已经添加过字典
            /// </summary>
            /// <param name="Key">键名称</param>
            /// <returns>是否添加过</returns>
            public bool Contains(object Key)
            {
                return Dictionary.Contains(Key);
            }
            /// <summary>
            /// 获取值
            /// </summary>
            /// <param name="Key">键名称</param>
            /// <returns></returns>        
            public object this[object Key]
            {
                get { return Dictionary[Key]; }
                set { Dictionary[Key] = value; }
            }
        }
        public class test
        {
            /// <summary>
            /// 结果
            /// </summary>
            enum Result
            {
                完全不同,
                相同,
                有点不同
            }
            [STAThread]
            public static void Main(string[]Args)
            {
                ClassOject tbA = new ClassOject();
                ClassOject tbB = new ClassOject();
                tbA.Add("0001", "A1");
                tbA.Add("0002", "B1");
                tbA.Add("0003", "A2");
                tbB.Add("0002", "B1");
                tbB.Add("0003", "B1");
                tbB.Add("0004", "A2");
                Console.WriteLine("A".PadRight(20, ' ') + "B".PadRight(20, ' ') + "比较结果".PadRight(20, ' '));
                Console.WriteLine("_".PadRight(60, '_'));
                Result result;
                foreach (DictionaryEntry de in tbA)
                {
                    Console.Write((de.Key + "," + de.Value).PadRight(20, ' '));
                    if (tbB.Contains(de.Key))
                    {
                        if (tbB[de.Key] == de.Value)
                        {
                            Console.Write((de.Key + "," + de.Value).PadRight(20, ' '));
                            result = Result.相同;
                            tbB[de.Key] = "-1" + de.Value;//加个-1标志,表示比较过了
                        }
                        else
                        {
                            Console.Write((de.Key + "," + tbB[de.Key]).PadRight(20, ' '));
                            result = Result.有点不同;
                            tbB[de.Key] = "-1" + de.Value;//加个-1标志,表示比较过了
                        }
                    }
                    else
                    {
                        Console.Write(" ".PadRight(20));
                        result = Result.完全不同;
                    }
                    Console.WriteLine(result.ToString().PadRight(20, ' '));
                    //Console.WriteLine();
                }
                result = Result.完全不同;
                //下面输出B中在A中完全不同的
                foreach (DictionaryEntry de in tbB)
                {
                    if (!de.Value.ToString().StartsWith("-1"))
                    {
                        Console.Write(" ".PadRight(20));
                        Console.Write((de.Key + "," + de.Value).PadRight(20, ' '));
                        Console.WriteLine(result.ToString().PadRight(20, ' '));
                    }
                }
            }
        }
    }
      

  2.   

    var arr1 = [1,2,4,9,5]
    var arr2 = [2,7,0,5,6]var a1 = arr1.sort(), a2 = arr2.sort();
    (function a(){ if(a1.length == 0){
    for(o2 in a2){
    document.write("X___"+a2[o2]+"___不一样<br/>");
    }
    return;
    }else if(a2.length == 0){
    for(o1 in a1){
    document.write(a1[o1]+"___X___不一样<br/>");
    }
    return;
    }

    if(a1[0] == a2[0]){
    document.write(a1[0]+"___"+a2[0]+"___一样<br/>");
    a1.shift();
    a2.shift();
    }else if(a1[0] < a2[0]){
    document.write(a1[0]+"___X___不一样<br/>");
    a1.shift()
    }else{
    document.write("X___"+a2[0]+"___不一样<br/>");
    a2.shift();
    }

    a();
    })();也算一个思路吧
      

  3.   

    按 showbo 的思路,基本搞定了。感谢大家的帮助。
      

  4.   

    cloudgamer 用了数组的 shift()函数。随着比较数组会越来越小。性能应该不错。