Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 否则重构将包含逻辑_Javascript_Underscore.js - Fatal编程技术网

Javascript 否则重构将包含逻辑

Javascript 否则重构将包含逻辑,javascript,underscore.js,Javascript,Underscore.js,我的目标是以更合适的形式重构以下条件。用更好的东西来代替这些条件将是非常好的 这种逻辑的主要思想是,这些“如果”的顺序不应该改变。即,若数组中至少存在一个“j”值,则即使存在其他值,也应返回该值 var items = [j,a]; if(_.contains(items, "j")) { return "j"; } else if(_.contains(items, "a")) { return "a"; } else if(_.contains(items, "l")) {

我的目标是以更合适的形式重构以下条件。用更好的东西来代替这些条件将是非常好的

这种逻辑的主要思想是,这些“如果”的顺序不应该改变。即,若数组中至少存在一个“j”值,则即使存在其他值,也应返回该值

var items = [j,a];
if(_.contains(items, "j")) {
    return "j";
} else if(_.contains(items, "a")) {
    return "a";
} else if(_.contains(items, "l")) {
    return "l";
}
return "d";
任何想法都将不胜感激。

这就是你一直在寻找的“更好的东西”吗?(请注意,字母的顺序是向后的,这样,如果包含j,则返回的字母将是…)

更新:如果要保持断开状态,请使用此选项

var items = [j,a];
var matchItems = ["j", "a", "l"];
var letter = "d"; //default

matchItems.every(function(item) {
    if(_.contains(items, item)) {
        letter = item;
        return false;
    }

    return true;
});

return letter;
这就是你想要的“更好的东西”吗?(请注意,字母的顺序是向后的,这样,如果包含j,则返回的字母将是…)

更新:如果要保持断开状态,请使用此选项

var items = [j,a];
var matchItems = ["j", "a", "l"];
var letter = "d"; //default

matchItems.every(function(item) {
    if(_.contains(items, item)) {
        letter = item;
        return false;
    }

    return true;
});

return letter;

下面是一些变化。不过,我不会说它们中的任何一个是更合适或更好的形式。(除非你对“更好”的定义恰好与其中的某些内容相匹配。)

//优点:很短
//缺点:效率不高(计算整个交叉口)
功能测试(项目){
var res=uu.first(u.intersection(items,['j','a','l']);
返回res==未定义的“d”:res;
}
log(test(['j','a']);
log(test(['x','y'])

下面是一些变体。不过,我不会说它们中的任何一个是更合适或更好的形式。(除非你对“更好”的定义恰好与其中的某些内容相匹配。)

//优点:很短
//缺点:效率不高(计算整个交叉口)
功能测试(项目){
var res=uu.first(u.intersection(items,['j','a','l']);
返回res==未定义的“d”:res;
}
log(test(['j','a']);
log(test(['x','y'])

这可能更适合于此可能更适合于此可能会更慢,因为不存在中断条件-如果每个项目中只包含少数项目,则可能不是问题list@Wolfgang足够公平的更新…这将是缓慢的,因为没有中断条件-可能不是一个问题,如果只有少数项目包括每个list@Wolfgang足够公平更新。。。