繁体   English   中英

检查对象数组中是否存在名称

[英]Check if name exists in object array

我有一个看起来像这样的对象数组

 var o = [
   {
    module : "mod1",
    customUrl : [
        { "state"    : "name1",
          "options"  : ["option1", "option2", "option3"]
        },
        { "state"    : "name2",
          "options"  : ["option1", "option2", "option3"]
        }
    ]
  },
 {
    module : "mod2",
    customUrl : [
        { "state"    : "name1",
          "options"  : ["option1", "option2", "option3"]
        },
        { "state"    : "name2",
          "options"  : ["option1", "option2", "option3"]
        }
    ]
 }
]

在函数中,我传递了一个字符串。 我希望能够对照“模块”键检查该字符串,并查看它是否与它们中的任何一个匹配,例如

 checkName = function(name) {
      //check if "name" matches any "module" in o

 }

这可能吗(我正在使用下划线,但普通的javascript也可以)。谢谢!

您可以使用一些功能,像这样

var checkName = function(name) {
  return _.some(o, function (el) {
    return el.module === name;
  });
};

一些来自Array

var checkName = function(name) {
  return o.some(function (el) {
    return el.module === name;
  });
};

纯Javascript解决方案。 如果找不到模块名称或找到模块名称时数组中的位置,则此函数返回false。 此功能不会重复计算,只会给出最后一次比赛的位置。

JSfiddle演示

var checkName = function(name) {
    var flag=false;
    for(var i=0; i<o.length;i++){
        if(name === o[i].module){
            flag=i;
        }
    }return flag;
};
console.log(checkName("mod2"));

使用纯本地JavaScript的另一种方法是:将对象转换为字符串,并检查模块的确切部分。

 var checkName = function(haystack, needle) { return JSON.stringify(haystack).contains('"module":"' + needle + '"') } checkName(o, 'mod1'); // returns true checkName(o, 'mod4'); // returns false 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM