检查名称是否存在于对象数组中
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"]
}
]
}
]
并且在函数中我传递了一个字符串。我希望能够根据 "module" 键检查该字符串,看看它是否与它们中的任何一个匹配,例如
checkName = function(name) {
//check if "name" matches any "module" in o
}
这可能吗(我使用的是下划线,但普通的 javascript 也可以)。谢谢!
你可以像这样使用函数some
var checkName = function(name) {
return _.some(o, function (el) {
return el.module === name;
});
};
或 some 来自 Array
var checkName = function(name) {
return o.some(function (el) {
return el.module === name;
});
};
纯Javascript溶液。如果找不到模块名称或找到名称时数组中的位置,则此函数 returns false。此函数不计算重复,它只会给出最后一场比赛的位置。
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
我有一个看起来像这样的对象数组
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"]
}
]
}
]
并且在函数中我传递了一个字符串。我希望能够根据 "module" 键检查该字符串,看看它是否与它们中的任何一个匹配,例如
checkName = function(name) {
//check if "name" matches any "module" in o
}
这可能吗(我使用的是下划线,但普通的 javascript 也可以)。谢谢!
你可以像这样使用函数some
var checkName = function(name) {
return _.some(o, function (el) {
return el.module === name;
});
};
或 some 来自 Array
var checkName = function(name) {
return o.some(function (el) {
return el.module === name;
});
};
纯Javascript溶液。如果找不到模块名称或找到名称时数组中的位置,则此函数 returns false。此函数不计算重复,它只会给出最后一场比赛的位置。
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