答案 0 :(得分:3)
您正在columnModel
数组中搜索字符串值,但您正在其中存储对象(columnModel.push({'colName': $(this).text()});
)。 $.inArray()
无法自行决定与每个数组元素的colName
属性进行比较,它只是将您搜索的值与每个数组元素进行比较。
答案 1 :(得分:2)
你可以做两件事:
使用strings
(由@lanzz建议)将objects
添加到数组而不是.push
,然后$.inArray
将按预期工作。
或者,如果您确实需要在数组中存储对象(例如,如果您需要在每个对象中包含多个属性),则需要迭代每个对象并查看colName
是否已存在:< / p>
var colExists = false;
var text = $(this).text();
$.each(columnModel, function(k, v) {
if(text == v['colName']) {
colExists = true;
}
});
然后将支票从if(colExists === -1)
更改为if(!colExists)
。
示例强>
$(function () {
$('#ddlMain').change(function (event) {
$('option:selected', $(this)).each(function () {
var colExists = false;
var text = $(this).text();
$.each(columnModel, function(k, v) {
if(text == v['colName']) {
colExists = true;
}
});
if(!colExists) {
columnModel.push({'colName': $(this).text()});
alert($(this).text() + ' added to columnModel');
}
});
});
});