Javascript 如何在if语句中检查多个值和匹配的值?
我有一个if语句,看起来像这样:Javascript 如何在if语句中检查多个值和匹配的值?,javascript,Javascript,我有一个if语句,看起来像这样: if ("Bolagsmän" in nicerows){ var contact = this.makeContact(nicerows['Bolagsmän'],true); } else if ("Komplementär(er)" in nicerows){ var contact = this.makeContact(nicerows['Komplementär(er)'],true); }
if ("Bolagsmän" in nicerows){
var contact = this.makeContact(nicerows['Bolagsmän'],true);
}
else if ("Komplementär(er)" in nicerows){
var contact = this.makeContact(nicerows['Komplementär(er)'],true);
}
else if("Innehavare" in nicerows){
var contact = this.makeContact(nicerows['Innehavare'],false);
}
else if("Styrelseledamot, verkställande direktör" in nicerows){
var contact = this.makeContact(nicerows['Styrelseledamot, verkställande direktör'], true);
}
else if("Styrelseledamöter" in nicerows){
var contact = this.makeContact(nicerows['Styrelseledamöter'], true);
}
正如您所看到的,这是大量的代码乘法,只是因为有一些可能的变量。有没有更干净的方法呢?像这样的怎么样
var words = {"Bolagsmän": true, "Komplementär(er)": true, "Innehavare": false, "Styrelseledamot, verkställande direktör": true, "Styrelseledamöter": true};
for(var word in words) {
if(words.hasOwnProperty(word)) {
if(word in nicerows) {
var contact = this.makeContact(word, words[word]);
break;
}
}
}
像这样的怎么样
var words = {"Bolagsmän": true, "Komplementär(er)": true, "Innehavare": false, "Styrelseledamot, verkställande direktör": true, "Styrelseledamöter": true};
for(var word in words) {
if(words.hasOwnProperty(word)) {
if(word in nicerows) {
var contact = this.makeContact(word, words[word]);
break;
}
}
}
您可以使用循环,或者是现代循环:
var names = ["Bolagsmän", "Komplementär(er)", "Innehavare", "Styrelseledamot, verkställande direktör", "Styrelseledamöter"];
var contact;
names.some(function(name)
{
if (name in nicerows)
{
contact = this.makeContact(nicerows[name], name !== 'Innehavare');
return true; // Breaks the loop
}
});
或者是那种无聊的老东西:
var names = ["Bolagsmän", "Komplementär(er)", "Innehavare", "Styrelseledamot, verkställande direktör", "Styrelseledamöter"];
var contact;
var index, name;
for (index = 0; index < names.length; ++index)
{
name = names[index];
if (name in nicerows)
{
contact = this.makeContact(nicerows[name], name !== 'Innehavare');
break;
}
}
您可以使用循环,或者是现代循环:
var names = ["Bolagsmän", "Komplementär(er)", "Innehavare", "Styrelseledamot, verkställande direktör", "Styrelseledamöter"];
var contact;
names.some(function(name)
{
if (name in nicerows)
{
contact = this.makeContact(nicerows[name], name !== 'Innehavare');
return true; // Breaks the loop
}
});
或者是那种无聊的老东西:
var names = ["Bolagsmän", "Komplementär(er)", "Innehavare", "Styrelseledamot, verkställande direktör", "Styrelseledamöter"];
var contact;
var index, name;
for (index = 0; index < names.length; ++index)
{
name = names[index];
if (name in nicerows)
{
contact = this.makeContact(nicerows[name], name !== 'Innehavare');
break;
}
}
当对象中只有一个属性时,没有理由列出并尝试所有可能的名称
for (var name in nicerows)
var contact = this.makeContact(nicerows[name], name!='Innehavare');
// break; - not even necessary
当对象中只有一个属性时,没有理由列出并尝试所有可能的名称
for (var name in nicerows)
var contact = this.makeContact(nicerows[name], name!='Innehavare');
// break; - not even necessary
你为什么在这里使用
。一些?您没有使用返回值。@BenjaminGruenbaum:这样我就可以停止循环了。疯狂的是,forEach
没有提供这样做的方法。明白了,我不知道。有些
可以保证交互顺序,+1可以教我一些东西。如果我们有良好的ES6支持:)var name=names.find(name=>name in nicerows);contact=this.makeContact(nicerows[name],name!=“Innehavare”)
@BenjaminGruenbaum::-)总有……你为什么用。这里有一些?您没有使用返回值。@BenjaminGruenbaum:这样我就可以停止循环了。疯狂的是,forEach
没有提供这样做的方法。明白了,我不知道。有些
可以保证交互顺序,+1可以教我一些东西。如果我们有良好的ES6支持:)var name=names.find(name=>name in nicerows);contact=this.makeContact(nicerows[name],name!=“Innehavare”)
@BenjaminGruenbaum::-)总有…我认为Innehavare(第二个参数不正确)Woops的失败,只是注意到并不是所有的单词都会产生true
。更新了代码以解释这些。我认为这对于Innehavare(不正确的第二个参数)Woops是失败的,只是注意到并不是所有的单词都会产生true
。已更新代码以说明这些问题。是否只希望其中一个问题发生?然后您可以使用for-in-loop-overnicerows
。是的,只有一个。看到了吗?您是否希望只有一个循环发生?然后您可以使用for-in-loop overnicerows
。是的,只有一个。请参阅