保留参数而不丢失属性

时间:2019-04-10 15:28:57

标签: javascript

我有这个简单的功能:

const something = ({params: {large, small}, ...rest}) => {
    // large and small is used here
    // then:
    otherFunction(rest);
}

我的问题是params具有otherFunctionrest所需要的其他参数。请注意,我不允许为otherFunction创建第二个参数。

是否有一种简单,优雅的解决方案将params属性保留在rest中?还是我必须写与restParams合并的rest

2 个答案:

答案 0 :(得分:-1)

类似的事情应该起作用。只需将两个对象合并在一起即可。

const something = (params, rest) => {
    let obj = {...params, ...rest}
    // large and small is used here
    // then:
    otherFunction(obj);
}

答案 1 :(得分:-1)

我看到两个选择

正如jonrsharpe中提到的the comments一样,如果您需要变量处于原始状态,请不要在参数中使用解构。使用简单参数并在函数中单独使用解构分配以获取所需的值:

const something = (args) => {
  const { params: { large, small } } = args;

  console.log(small);
  console.log(large);
  
  console.log(args);
}

something({
  params: {
    large: 3,
    small: 2
  },
  test: "value",
  test2: 2
});

或者您可以将箭头函数更改为函数表达式,然后使用arguments获取最初的第一个参数:

const something = function({params: {large, small}, ...rest}) {
  console.log(small);
  console.log(large);

  console.log(arguments[0]);
}

something({
  params: {
    large: 3,
    small: 2
  },
  test: "value",
  test2: 2
});