0

我是 jQuery 和编程新手,如何检查两个数组元素是否属于同一个数组。我这样做了..但它不起作用

var blackCoins = ["♚", "♛", "♜", "♝", "♞", "♟"];
var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
var buffer = $("myselector1").text();
var storeBuffer = $("#myselector2").text();
        var flag = 0;           
        if ($.inArray(buffer, whiteCoins) > -1  &&  $.inArray(storeBuffer, whiteCoins) > -1){                        
                flag = 1;
        }
        else if($.inArray(buffer, blackCoins) > -1  &&  $.inArray(storeBuffer, blackCoins) > -1) {
                flag = 1;
        }           
}

如果需要,我可以提供更多信息..

4

3 回答 3

1

JQuery .InArray()这个函数应该可以帮助你。

在 && 组合中使用它,您将得到答案。

var blackCoins = ["♚", "♛", "♜", "♝", "♞", "♟"];
var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];

function getCoinColor(coin) {
    var inBlack = $.inArray(coin, blackCoins);
    var inWhite = $.inArray(coin, whiteCoins);

    if (inBlack > -1) {
        return "black";
    }

    if (inWhite > -1) {
        return "white";
    }
}

function canKill(selectedCoin, targetCoin) {
    return getCoinColor(selectedCoin) != getCoinColor(targetCoin);
}


var targetCoin = "♚";
var selectedCoin = "♝";

var killable = canKill(selectedCoin, targetCoin);

if (killable) {
    alert("Killed it!");
}
else {
    alert("Can't kill your own kind!");
}​

我试图把它写得尽可能容易理解。我知道有几种方法可以缩短它。

提琴手

于 2012-09-05T07:54:53.493 回答
1

您要进行两次相同的检查,因此将该检查放入一个函数中:

function isWhiteCoin(color) {
  switch (color) {
    case "♔":
    case "♕":
    case "♖":
    case "♗":
    case "♘":
    case "♙": return true;
  }
  return false;
}

现在您可以调用该函数两次:

var flag=0;
var preRefColor = $("#check").text();
var thisColor = $(this).text();
if (isWhiteCoin(preRefColor) && isWhiteCoin(thisColor)) {
  flag = 1;
}
于 2012-09-05T08:17:52.527 回答
0

关于如何检查元素有些奇怪 - 因为:

$("#check").attr("id");

$('#check') 的属性“id”将返回“check”......你想做什么?

我假设我们有一个有效的选择器,那么答案是:

  var flag=0;            
  var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
  var mytext = $('#myselector').text();

  if($.inArray(mytext, whiteCoins) > -1){
    flag=1;
  }

我没有从您的代码中得到的是,如果您可能正在针对您的数组检查两个不同的元素。从您的代码中不清楚 $(this) 是什么。如果您正在检查两个选择器,其中一个是 $(this),请使用:

  var flag=0;            
  var whiteCoins = ["♔", "♕", "♖", "♗", "♘", "♙"];
  var mytext1 = $('#myselector1').text();
  var mytext2 = $(this).text();
  if($.inArray(mytext1, whiteCoins) > -1 && $.inArray(mytext2, whiteCoins) > -1){
    flag=1;
  }
于 2012-09-05T08:05:23.757 回答