我正在尝试编写一个将使用三个参数的函数,其中任何一个参数都可能具有空值。我必须返回其他两个参数,这些值不为空 例如,如果我有 a , b 和 c 参数以及 a 和 b < / strong>为空,我必须返回 c 。或 b 和 c 的值为空,我必须返回 a 。 或者,如果 a 为空,则返回 b和c 。 我该怎么办?
function returnNotNull= (a, b,c) => {
if (a !== null && b === null && c === null)
return (a);
修改 更多说明:
a and b
为null,则c
必须具有值。在这种情况下,我想return only c
答案 0 :(得分:2)
这有点奇怪,有时返回一个值,有时返回它们的数组,但这似乎满足了您的需求,并且实际上很灵活,因为它可以处理任意数量的参数,而不仅仅是三个参数:
const returnNotNull = (...args) => {
const result = args.filter(a => a !== null)
return result.length == 1 ? result[0] : result
}
console.log(returnNotNull('a', 'b', 'c')) //~> ['a', 'b', 'c']
console.log(returnNotNull('a', 'b', null)) //~> ['a', 'b']
console.log(returnNotNull('a', null, 'c')) //~> ['a', 'c']
console.log(returnNotNull('a', null, null)) //~> 'a'
console.log(returnNotNull(null, 'b', 'c')) //~> ['b', 'c']
console.log(returnNotNull(null, 'b', null)) //~> 'b'
console.log(returnNotNull(null, null, 'c')) //~> 'c'
console.log(returnNotNull(null, null, null)) //~> []
但是,如果您可以总是返回一个数组,那么这会更简单,在我看来,这会更加清晰:
const returnNotNull = (...args) => args.filter(a => a !== null)
这只会返回一个包含所有非空值的数组。
答案 1 :(得分:0)
为什么不仅仅是这样? 如果您说当其他两个为空时它仅必须返回一个参数,对吗?如果它们都不都是null,应该怎么办?
returnNotNull = (a, b,c) => {
return (a || b || c);
}
edit:是的,所以最好的办法就是这样(cf:@sjdm)
returnNotNull = (a, b,c) => {
return ((a != null) ? a : (b != null) ? b : c);
}
有一些其他情形的情况下,你没有指定?
答案 2 :(得分:0)
这是我使用三元运算符可以想到的最短方法。这是快速且容易的:)
function returnNotNull(a, b, c){
return ( a !== null ? a : ( b !== null ? b : c));
}
console.log(returnNotNull(null , null , 3));
答案 3 :(得分:0)
function myFunction(a,b,c){
let result = [];
for(let argument of arguments){
//check if argument is not null
if(argument !== null) result.push(argument);
}
//if array have only 1 value then return that else return whole array
return (result.length === 1) ? result[0] : result;
}
console.log(myFunction(null,1,2));
console.log(myFunction(null,null,2));
console.log(myFunction(null,1,null));
您可以使用arguments
将Array.from
转换为数组,然后使用filter
获得不是null
的值
function myFunction(a,b,c){
return Array.from(arguments).filter(argument => argument !==null);
}
console.log(myFunction(null,1,2));
console.log(myFunction(null,null,2));
console.log(myFunction(null,1,null));
答案 4 :(得分:0)
function returnNotNull(a, b,c) {
result = [];
if(a !== null){ result.push(a); }
if(b !== null){ result.push(b); }
if(c !== null){ result.push(c); }
return result;
}