我有一个像这样定义的对象数组:
var editionsObj = new Array();
function editionObject(name,description)
{
this.name = name;
this.description = description;
}
我需要在editionsObj数组中搜索name字段中是否存在变量。如果数组中没有对象的名称值等于我需要的值,我将把它插入到数组中。我在jQuery中看到过一些例子但是无法使用它们。
提前致谢!
答案 0 :(得分:1)
能够使用类似于以下内容的代码解决此问题:
var objCheck = null;
objCheck = jQuery.grep(editionsObj, function(n, i) {
return n.name == currentEdition;
});
if ((objCheck == null) || (objCheck.length == 0))
{
editionsCount++;
editionsObj[editionsCount] = new editionObject(currentEdition,currentFamily,'');
}
基本上它在对象数组上执行grep,检查值的某个索引(名称)。如果该值不存在,则执行add。
希望它可以帮助别人!
答案 1 :(得分:0)
我将假设数组的每个元素只有两个属性。如果这是正确的,那么就忘记了命名属性并只使用JS对象的想法:
var editionsObj = {};
function addIfNotExists(name,description){
if(!(name in editionsObj)) editionsObj[name] = description;
}
答案 2 :(得分:0)
一个简单的for
循环就足够了:
var nameToSearchFor = 'Bob',
desc = 'whatever',
alreadyExists = false;
for (var i = 0, il = editionsObj.length; i < il; i++) {
if (editionsObj[i].name === nameToSearchFor) {
alreadyExists = true;
break;
}
}
if (!alreadyExists) {
editionsObj.push(new editionObject(nameToSearchFor, desc));
}