Javascript 如何仅传递非空变量作为函数参数?

Javascript 如何仅传递非空变量作为函数参数?,javascript,function,arguments,Javascript,Function,Arguments,我有一个函数,它将始终接收3个参数;至少有一个参数将具有值,但一个或多个参数可能不具有值。使用此函数中的参数后,我只需要将带有值的参数发送到另一个函数。此外,第二个函数至少需要2个参数,所以我只想在至少有2个参数有值的情况下执行它。实现这一目标的最佳方式是什么 下面是我的代码结构示例: function doSomething(arg1, arg2, arg3) { // Do something with args // Only want to send args with

我有一个函数,它将始终接收3个参数;至少有一个参数将具有值,但一个或多个参数可能不具有值。使用此函数中的参数后,我只需要将带有值的参数发送到另一个函数。此外,第二个函数至少需要2个参数,所以我只想在至少有2个参数有值的情况下执行它。实现这一目标的最佳方式是什么

下面是我的代码结构示例:

function doSomething(arg1, arg2, arg3) {
    // Do something with args

    // Only want to send args with values to this function (min 2 args)
    return doSomethingElse(arg1, arg2, arg3);

}

Edit:第二个函数,
doSomethingElse()
,可以接收任意数量的参数,最小值为2。

首先过滤
参数
对象,以确保没有
未定义的值。如果有两个或多个函数,则可以从该函数将arguments对象(通过
spread
)传递到下一个函数

函数doSomething(arg1、arg2、arg3){
const totalArgs=[…参数].filter(arg=>arg!==未定义);
如果(totalArgs.length>=2){
返回doSomethingElse(…总参数);
}否则{
log('提供的参数不够');
}
}
函数doSomethingElse(){
from(arguments.forEach(arg=>console.log(arg));
}
//doSomethingElse()火灾
剂量测定法(1,2);
//doSomethingElse()不会开火。没有足够的论据。

剂量测定法(1)
首先过滤
参数
对象,以确保没有未定义的
值。如果有两个或多个函数,则可以从该函数将arguments对象(通过
spread
)传递到下一个函数

函数doSomething(arg1、arg2、arg3){
const totalArgs=[…参数].filter(arg=>arg!==未定义);
如果(totalArgs.length>=2){
返回doSomethingElse(…总参数);
}否则{
log('提供的参数不够');
}
}
函数doSomethingElse(){
from(arguments.forEach(arg=>console.log(arg));
}
//doSomethingElse()火灾
剂量测定法(1,2);
//doSomethingElse()不会开火。没有足够的论据。
剂量测定法(1)您可以使用:

函数一(…args){
console.log(参数长度);
两个(…args);
}
函数二(…args){
console.log(参数长度);
}
一个(1,2,3,4)您可以使用:

函数一(…args){
console.log(参数长度);
两个(…args);
}
函数二(…args){
console.log(参数长度);
}
一个(1,2,3,4)这个怎么办

function doSomething(arg1, arg2, arg3) {
    // Do something with args

    // Only want to send args with values to this function (min 2 args)
    if ([arg1, arg2, arg3].filter(arg => null != arg).length >= 2) {
        return doSomethingElse(arg1, arg2, arg3);
    }
}
这个怎么样

function doSomething(arg1, arg2, arg3) {
    // Do something with args

    // Only want to send args with values to this function (min 2 args)
    if ([arg1, arg2, arg3].filter(arg => null != arg).length >= 2) {
        return doSomethingElse(arg1, arg2, arg3);
    }
}
可以与数组一起使用,以便传递所需内容

function doSomething() {

  // convert the arguments to an array
  var args = Array.from(arguments);
  // var args = [...arguments]; // or use spread operator

  // filter the array with only thing that are not undefined (change your check)
  var  argsWithValues = args.filter(function (item) { return item !== undefined })
  // const argsWithValues = args.filter(item = > item !== undefined)

  // call function if there are 2 items or more
  return argsWithValues.length > 1 ? doSomethingElse.apply(this, argsWithValues) : null;

}
可以与数组一起使用,以便传递所需内容

function doSomething() {

  // convert the arguments to an array
  var args = Array.from(arguments);
  // var args = [...arguments]; // or use spread operator

  // filter the array with only thing that are not undefined (change your check)
  var  argsWithValues = args.filter(function (item) { return item !== undefined })
  // const argsWithValues = args.filter(item = > item !== undefined)

  // call function if there are 2 items or more
  return argsWithValues.length > 1 ? doSomethingElse.apply(this, argsWithValues) : null;

}
我希望这对你有帮助

function doSomething() {
    // Do something with args
    if(arguments.length==0){
      console.error("this function should have a param");return;
    }
    var args = [];
      for (var i = 0; i < arguments.length; i++) {
          console.log("argument number " + i + " : "  + arguments[i]); args.push(arguments[i]);
    }
    // Only want to send args with values to this function (min 2 args)
    return doSomethingElse(args);

}
function doSomethingElse(){
    for (var i = 0; i < arguments.length; i++) {
          console.log("argument number " + i + " : "  + arguments[i]);
    }
}
函数doSomething(){
//用args做点什么
if(arguments.length==0){
console.error(“此函数应具有参数”);返回;
}
var args=[];
for(var i=0;i
我希望这对您有所帮助

function doSomething() {
    // Do something with args
    if(arguments.length==0){
      console.error("this function should have a param");return;
    }
    var args = [];
      for (var i = 0; i < arguments.length; i++) {
          console.log("argument number " + i + " : "  + arguments[i]); args.push(arguments[i]);
    }
    // Only want to send args with values to this function (min 2 args)
    return doSomethingElse(args);

}
function doSomethingElse(){
    for (var i = 0; i < arguments.length; i++) {
          console.log("argument number " + i + " : "  + arguments[i]);
    }
}
函数doSomething(){
//用args做点什么
if(arguments.length==0){
console.error(“此函数应具有参数”);返回;
}
var args=[];
for(var i=0;i
那么它是如何工作的呢?这将是
doSomethingElse(arg1,arg3)如果2没有值?过滤参数列表中的非空值,并将结果数组应用于第二个函数,但前提是该数组至少有2个项长。@epascarello YesSo它是如何工作的?这将是
doSomethingElse(arg1,arg3)如果2没有值?筛选参数列表中的非空值,并将结果数组应用于第二个函数,但前提是该数组至少有2个项目长。@如果将其拆分为两种可能,即ES5和ES6,而不是注释,则epascarello YesIt会很好看。如果将其拆分为两种可能,则会很好看,ES5和ES6,而不是注释。