首先,我在SO上检查了类似的主题,例如:Comparing similar strings in 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 !?
我尝试使用其他一些我不记得的东西,但都没有用。 如何修改上述代码以获得正确答案?
提前谢谢。
答案 0 :(得分:0)
您可以使用s != ""
而不是if (s.length)
。当长度为0(无内容)时,它将评估为假,当填充字符串时,长度将> 0。 0,它将评估为真。
编辑:
$.each(array, function(i, el){
if($.inArray(el, a) === -1)
{
a.push(el);
if (s.length)
{
s += "@~@~@";
}
s += el;
}
});
答案 1 :(得分: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("@~@~@")));