0

まず、SO に関する同様のトピックを確認しました。たとえば、jquery で同様の文字列を比較しています が、役に立ちませんでした。

これが私のコードです:

    //jQuery functions
    (function($)
        {
            arrayToString = function(array)
            {
                var s = "";
                var a = [];
                $.each(array, function(i, el){
                    if($.inArray(el, a) === -1)
                        {
                            a.push(el);
                            if (s!="")
                                {
                                    s += "@~@~@";
                                }
                            s += el;
                        }
                });
                return s;
            };
        })(jQuery);

    (function($)
        {
            intersectionOfArrays = function(a,b)
            {
                var array = [];
                $.each(a, function(i, el){
                    if($.inArray(el, array) === -1 && $.inArray(el, b) != -1) array.push(el);
                });
                return array;
            };
        })(jQuery);    

var intersection = arrayToString(intersectionOfArrays(selectionOf("produitcartesien").split("@~@~@"),tripletsOfCollection.split("@~@~@")));
alert("intersection = '"+intersectionOfArrays(selectionOf("produitcartesien").split("@~@~@"),tripletsOfCollection.split("@~@~@"))+"'");
alert("selectionOf(produitcartesien) = '"+selectionOf("produitcartesien")+"'");
alert("They are different: '"+intersection!=selectionOf("produitcartesien")+"'");

アラートには同じ文字列が表示されることがありますが、!=!==を使用した比較では常にtrue !?が返されます。

I tried using some other things that I don't remember, but none worked. How can I modify the above code to get the correct answer?

Thank you in advance.

4

2 に答える 2

0

これが私がそれを機能させるために使用したものです:

(function($)
        {
            arraysAreEqual = function(arr1,arr2)
            {
                if ($(arr1).not(arr2).length == 0 && $(arr2).not(arr1).length == 0)
                    {
                        return true;
                    }
                return false;
            };
        })(jQuery);

var intersection = arrayToString(intersectionOfArrays(selectionOf("produitcartesien").split("@~@~@"),tripletsOfCollection.split("@~@~@")));
alert("intersection = '"+intersectionOfArrays(selectionOf("produitcartesien").split("@~@~@"),tripletsOfCollection.split("@~@~@"))+"'");
alert("selectionOf(produitcartesien) = '"+selectionOf("produitcartesien")+"'");
alert("They are equal: "+arraysAreEqual(intersection.split("@~@~@"),selectionOf("produitcartesien").split("@~@~@")));
于 2013-01-18T10:25:03.687 に答える
0

を使用する代わりに、 を使用s != ""できますif (s.length)。長さが 0 (コンテンツなし) の場合は false と評価され、文字列が満たされると長さが > 0 と評価され、true と評価されます。

編集:

$.each(array, function(i, el){
                    if($.inArray(el, a) === -1)
                        {
                            a.push(el);
                            if (s.length)
                                {
                                    s += "@~@~@";
                                }
                            s += el;
                        }
                });
于 2013-01-18T09:44:35.330 に答える