首页 > 解决方案 > 如果参数不为空,则返回值

问题描述

我正在尝试编写一个函数,该函数将采用三个参数,任何参数都可能具有空值。我必须返回其他两个参数,这些值不为 null 例如,如果我有abc参数并且ab的值为 null,我必须返回c。或者如果bc的值为 null 我必须返回a。或者如果a为空,则返回b 和 c。我怎样才能做到这一点?

function returnNotNull= (a, b,c) => {
if (a !== null && b === null && c === null)
    return (a);

编辑 更多说明:

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

标签: javascript

解决方案


这有点奇怪,有时返回单个值,有时返回它们的数组,但它似乎满足您的需求并且实际上很灵活,因为它可以处理任意数量的参数,而不仅仅是三个:

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)

这将简单地返回一个包含所有非空值的数组。


推荐阅读