JavaScript:在对象数组中查找值

时间:2011-05-26 19:29:40

标签: javascript jquery

我有一个像这样定义的对象数组:

var editionsObj = new Array();
function editionObject(name,description)
{
    this.name = name;
    this.description = description;
}

我需要在editionsObj数组中搜索name字段中是否存在变量。如果数组中没有对象的名称值等于我需要的值,我将把它插入到数组中。我在jQuery中看到过一些例子但是无法使用它们。

提前致谢!

3 个答案:

答案 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));
}