私はinArrayを使用して髪を引き裂いています。yinz が役立つことを願っています。
データベースからいくつかのユーザー ID を取得する AJAX があります。これは JSON でエンコードされ、配列としてプルダウンされます。ただし、値を配列と照合しようとすると、常に -1 になります。決して一致しません。
何が起こっているのかを把握するために一連のアラートを設定しましたが、なぜそれが機能していないのか、一生わかりません。議論のために、それがプルダウンしているユーザーが #s 1、2、および 3 であると仮定しましょう。画像コレクションで表されるユーザー ID は、1、2、3、4、5 です。
$.ajax({
dataType: "json",
url: "/* some url */",
success: function (players) {
$("#userpics img").each(function () {
var userid = $(this).data("userid");
alert (players); // 1,2,3
alert (userid); // 1
alert ("is array? " + Array.isArray(players)); // true
alert ("in array? " + $.inArray(userid, players)); // -1
alert ("in object? " + (userid in players)); // false
alert ("match? " + (userid == players[0])); // true
})
}
});
ご覧のとおり、プルダウンされる配列は最初のアラートでは文字列として表示されますが、3 番目のアラートでは配列として解析されます。userid = 1
と を引き下げた場合でも、と["1","2","3"]
は一致しませんinArray
。しかし、私が一致userid == players[0]
すると一致します。
私は完全に困惑しています。