如果参数不为null,则返回值

时间:2019-02-01 03:25:54

标签: javascript

我正在尝试编写一个将使用三个参数的函数,其中任何一个参数都可能具有空值。我必须返回其他两个参数,这些值不为空 例如,如果我有 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);

修改 更多说明:

  1. 最多2个参数一次可以为null,例如:如果a and b为null,则c必须具有值。在这种情况下,我想return only c
  2. 如果只有1个参数为null,我希望其他2个参数可以作为数组或对象返回
  3. 如果所有参数都不为null,我想返回所有参数
  4. 所有三个参数不能为null,因此请不要考虑所有参数为null的情况

5 个答案:

答案 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));

第二种方式

您可以使用argumentsArray.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;
}