两个相同的字符串彼此不相等

时间:2013-08-07 17:19:17

标签: javascript

嗨我在比较两个应该真正相同的字符串时遇到了麻烦,但是当我在alert(f == g)中评估它时,它的计算结果为false。

var oTrackCarriers = {
"9045": [
["A"],
["B"],
["C"]
],
"9046": [
[" "] 
]
};
var oHeadingCarriers = {
"Ripplefold": [
["A"],
["B"],
["C"],
["D"]
],
"PinchPleat": [
["C"],
["D"]
]
};
var HeadingList = oHeadingCarriers["Ripplefold"];
var TrackList = oTrackCarriers["9045"]
var f = (TrackList[0].valueOf());
var g = (HeadingList[0].valueOf());
alert(f);
alert(g);
alert(f == g);

这是因为我事先将这两个值放入数组中吗?

这是运行http://jsfiddle.net/sQrST/17/embedded/result/ 谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

var oTrackCarriers = { "9045": [["A"], ["B"], ["C"]],
                       "9046": [[" "]] };

var TrackList = oTrackCarriers["9045"];   // TrackList = [["A"], ["B"], ["C"]]

var f = (TrackList[0].valueOf())          // f =  ["A"]

alert()以非直观的方式显示数组,因此f(和g)是数组的事实是隐藏的,并且数组的比较不会对元素进行元素比较,它会比较变量引用相同的数组;

["A"] == ["A"] 
> false

"A" == "A"
> true

a = ['A']
b = a
a == b
> true

答案 1 :(得分:1)

["A"]是一个数组。您可以使用TrackList[0][0]HeadingList[0][0]获取字符串值,也可以检查TrackList[0]HeadingList[0]中包含的每个字符串是否相等。通常,直接比较它们时,两个数组总是不同的。事实上,如果一个数组的内存地址相同,那么它就等于另一个数组,这没有任何意义。

答案 2 :(得分:0)

不要比较数组......改为:

alert(f[0]);
alert(g[0]);
alert(f[0] == g[0]);

现在是'真'