我有一个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.");
}
感谢任何帮助。
答案 0 :(得分:1)
您可以改为使用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>
答案 1 :(得分:1)
您可以这样做:
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.");
}
}
答案 2 :(得分:1)
因为你有一个对象数组,我可能会快速循环查看它是否在那里并抓住它,如果它是。
function labelExists(lblval) {
for(i=0; i<accountOptions.length; i++) {
if (accountOptions[i].value == lblval) {
return accountOptions[i];
}
}
return false;
}
如果数据集太大,这可能不是最好的。