jQuery如何检查两个数组元素是否属于同一数组

jQuery如何检查两个数组元素是否属于同一数组,jquery,Jquery,我对jQuery和编程都是新手,如何检查两个数组元素是否属于同一个数组。是我干的。。但它不起作用 var blackCoins = ["♚", "♛", "♜", "♝", "♞", "♟"]; var whiteCoins = ["♔", "♕", "♖", "♗", "♘",

我对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;
        }           
}
如果需要,我可以提供更多信息。

此功能应该可以帮助您

在&&组合中使用此选项,您将得到您的答案

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!");
}​
我尽量写得通俗易懂。我知道有几种方法可以缩短它


如何让元素进行检查有些奇怪-因为:

$("#check").attr("id");
$('#check')的属性“id”将返回“check”。。。你想干什么

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

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

  if($.inArray(mytext, whiteCoins) > -1){
    flag=1;
  }
我没有从你的代码中得到的是,如果你可能正在对照数组检查两个不同的元素。从您的代码中不清楚$(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;
  }

您将执行两次相同的检查,因此请将该检查放入函数中:

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;
}

是的,它将返回“支票”。实际上,我还没有在这里提供完整的代码。因为我在这部分遇到了麻烦。我编辑了这个问题。如果还不清楚,请告诉我。嘿,我编辑了代码,就像你说的。但它仍然不起作用。也许我做错了什么。我对你的代码进行了修改。就我所能理解的问题而言。也许你意识到字符串是国际象棋程序的ascii字符。这会有什么不同吗?事实上,我想说明的是,一枚白色硬币不能杀死另一枚白色硬币,黑色硬币也不能杀死另一枚白色硬币。看到白色和黑色硬币之间的ascii码存在差异,这就更简单了。我将编辑我的代码。。稍等。我使用alert()检查,$.inArray()未被jQuery识别。没有控制台错误。检查此项后,我现在了解解决方案,但它不起作用。问题与@Kyorcode解决方案相同。变量不等于这些字符串。这可能是因为ASCII字符。@venkateshwar:我明白了,这不是元素中的实际文本。使用
html
方法而不是
text
函数来获取元素中的html代码,或者在检查值时使用字符代码而不是html实体,即
“♔;”
变为
“\u2654”