Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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 - Fatal编程技术网

Javascript 将值与值或数组匹配的函数(更好的写入方法)

Javascript 将值与值或数组匹配的函数(更好的写入方法),javascript,Javascript,我有一个函数,它有两个参数,第一个是值,第二个可以是值或数组。 它检查第一个参数是否等于第二个参数,或者它是否是数组,是否等于数组的一个元素 function matchType(value, type) { if (Array.isArray(type)) { for (t of type) { if (value == t) { return value; }

我有一个函数,它有两个参数,第一个是值,第二个可以是值或数组。 它检查第一个参数是否等于第二个参数,或者它是否是数组,是否等于数组的一个元素

function matchType(value, type) {        
    if (Array.isArray(type)) {
        for (t of type) {
            if (value == t) {
                return value;
            }
        }
    } else {
        if (value == type) {
            return value;
        }
    }
    return null;
}
然后它的工作原理如下:

匹配类型foo,foo

matchTypefoo[foo,bar]

matchTypefoo,[诸如此类,酒吧]

空的

写这个函数的更优雅的方式是什么,最好是函数式?ES6或lodash可以使用。

首先-使用ES6阵列的includes-。 其次,您可以使用&、| |和…?:,将fnction缩短为一行:

首先-使用ES6阵列的includes-。 其次,您可以使用&、| |和…?:,将fnction缩短为一行:


您可以使用一个数组进行检查并用于检查,然后返回值或null

函数matchTypevalue,类型{ 返回[]。concattype.includeValue 价值 :null; } console.logmatchTypefoo,foo;//福 console.logmatchTypefoo[foo,bar];//福
console.logmatchTypefoo,[blah,bar];//null您可以使用一个数组进行检查并用于检查,然后返回值或null

函数matchTypevalue,类型{ 返回[]。concattype.includeValue 价值 :null; } console.logmatchTypefoo,foo;//福 console.logmatchTypefoo[foo,bar];//福 console.logmatchTypefoo,[blah,bar];//null如果您可以将类型视为数组,那么如果它是===to type,您可以直接返回值,否则使用条件运算符并在type包含它时返回值:

函数匹配类型值,类型{ 如果值===类型返回值; 返回类型.includeValue 价值 :null; } console.logmatchTypefoo,foo; console.logmatchTypefoo[foo,bar]; console.logmatchTypefoo[blah,bar] 如果您可以将类型视为一个数组,那么如果它是===to type,您可以直接返回值,否则使用条件运算符并在type包含它时返回值:

函数匹配类型值,类型{ 如果值===类型返回值; 返回类型.includeValue 价值 :null; } console.logmatchTypefoo,foo; console.logmatchTypefoo[foo,bar];
console.logmatchTypefoo[blah,bar] 使用Ramda的功能性方法:

常数匹配类型= R.ifElseR.contains, R.nthArg0, R.alwaysnall; console.logmatchTypefoo,foo; console.logmatchTypefoo[foo,bar]; console.logmatchTypefoo[blah,bar];
使用Ramda的功能性方法:

常数匹配类型= R.ifElseR.contains, R.nthArg0, R.alwaysnall; console.logmatchTypefoo,foo; console.logmatchTypefoo[foo,bar]; console.logmatchTypefoo[blah,bar];
function matchType(value, type) {
  var toReturnValue = false;
  toReturnValue = Array.isArray(type) ? type.includes(value) : value === type;
  return toReturnValue ? value : null;
}