检查Javascript数组中是否存在label

Check if label exists in Javascript array

本文关键字:存在 label 是否 Javascript 数组 检查      更新时间:2023-09-26

我有一个ajax jquery函数,它填充一个数组,每个元素包含一个标签和值:

    var accountOptions = new Array();
    $.ajax({
            type: "GET",
            url: apiUrl+"/Accounts/GetDropdown",
            async: false,
            success:
            function (response) {
                    $.each(response.Data, function (i, item) {
                        accountOptions.push({ label: item.Number, value: item.Id })
                    });
            }
    });

这个函数工作得很好,但是我需要检查标签是否存在于这个数组中,并且找不到如何做到这一点。我尝试了这个函数,但它检查数组,看看是否存在一个值,而不是标签。

if ($.inArray(account, accountOptions) == -1)
    {
        $(this).addClass("validation-error");
        alert("This account does not exist.");
    }

你可以使用jquery grep,它会用你设置的任何过滤器生成一个新的数组。如果长度>0,则它存在。

var array=[{'label':'one','value':'two'},{'label':'other','value':'more'},{'label':'foo','value':'bar'}];
var matches=$.grep(array,function(n){
  return n.label=='foo';
});
if(matches.length==0)
  alert('this account does not exist');
else
  alert('this account exists');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

你可以这样做:

https://jsfiddle.net/uwhgooeg/

var accountOptions = [{
    label: "account",
    value: 0
},
{                
    label: "label 2",
    value: 1
}
];
var account = "account";
for(var i = 0; i < accountOptions.length; i++){
    if(accountOptions[i].label == account)
    {
        $(this).addClass("validation-error");
        alert("This account does not exist.");
    }
}

因为你有一个对象数组,我可能只是快速循环,看看它是否在那里,如果它在,就抓住它。

function labelExists(lblval) {
  for(i=0; i<accountOptions.length; i++) {
    if (accountOptions[i].value == lblval) { 
      return accountOptions[i];
    }
  }
  return false;
}

如果你的数据集太大,这可能不是最好的。