Javascript 如何在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语句,看起来像这样:

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-over
nicerows
。是的,只有一个。看到了吗?您是否希望只有一个循环发生?然后您可以使用for-in-loop over
nicerows
。是的,只有一个。请参阅