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;
}