我需要将动态创建的变量与静态值数组进行比较。由于变量是动态生成的,因此我无法执行类似的操作

if ($.inArray('example', myArray) != -1)
{
  // found it
}


我到目前为止是

 //This runs for each link in the .lc_Cell element
  $('.lc_Cell > p > a').attr('href', function(i, href) {

        //Grab the link and split it into chunks at each occurence of '&'
        var arr = href.split('&');
        console.log(arr);

        //Keep a portion of the link as a var, this is always a 4 digit number
        //For the purposes of this question lets say this value is going to be 7473
        var trId = arr[1].slice(-4);
        console.log(trId);

        //Populating my array of desired numbers to search against
        var validTR = [7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7351];
        console.log(validTR);


        //Compare the sliced value from the link against the array
        var testingID = $.inArray(trId, validTR)
        console.log(testingID);
}


即使trId中的值是数组中包含的值,我在控制台中的testingID始终保持返回-1。

最终,我需要能够为testingID获得一个正值,以便我可以编写一个if语句来事后做某事。

最佳答案

按照docs


值之间的比较是严格的。


您的trId值是一个字符串,数组值是数字。这是因为jQuery.attr() returns a string(在特殊情况下除外)。

尝试将您的数组值括在引号中以使其成为字符串或将其全部转换为字符串或数字:

trId = parseInt(trId, 10);


要么

var validTR = ["7473", "7474", ...


证明问题的小提琴可能是found here

10-06 07:44