如何使用解构获取参数的目标属性

时间:2019-07-11 20:12:09

标签: javascript arrow-functions destructuring

我目前正在测试,问题出在这样的地方-创建 detectCardType validateCardExpiryDate validateCardHolderName 函数。每个对象都应接受一个参数,并使用对象解构来获取该参数的目标属性。

这是我尝试过的。我尝试结合箭头功能,但是我不知道该如何破坏事物。

        const {target} = a;
      }
      const validateCardExpiryDate = ({b}) => {
        const {target} = b;
      }
      const validateCardHolderName = ({c}) => {
        const {target} = c;
      }

我不断 You have not declared detectCardType as specified

8 个答案:

答案 0 :(得分:2)

也许您复制错了,但我看不到定义detectCardType的顶部。无论如何,您要破坏两次:一次在参数列表中,一次在函数的变量声明中。您可以只使用其中一个,但同时使用两者会寻找一个argument[0].b.target而不是您想要的argument[0].target

答案 1 :(得分:1)

If ws.Cells(3 + j, 3) = "SW" Then ' implicit: .Value
    wssum.Cells(3 + k, 2 + i).Value = busum
Else
    wssum.Cells(3 + k, 14 + i).Value = busum
End If

答案 2 :(得分:1)

一些选择。第二个最短(有人通过编辑建议),但IMO可读性较差。第三是常规函数而不是箭头函数。

const detectCardType = a => {
  const {target} = a;
  return target;
}

// this style also works
const validateCardExpiryDate = {target} => target;

// as does this
function validateCardHolderName(obj) {
  const {target} = obj;
  return target;
}

const a = {target: 'answer'}
const b = {target: 'hello'}
const c = {target: 'world'}

console.log(detectCardType(a));
// "answer"
console.log(validateCardExpiryDate(b));
// "hello"
console.log(validateCardHolderName(c));
// "world"

答案 3 :(得分:0)

在这种情况下应该可以使用...

      const detectCardType = ({target}) => target
      const validateCardExpiryDate = ({target}) => target   
      const validateCardHolderName = ({target}) => target

答案 4 :(得分:0)

使用下面的函数参数对象分解方法,应该很好地进行测试


const detectCardType = ({target: card}) => {
    }
const validateCardExpiryDate = ({target: expiryDate}) => {
    }
const validateCardHolderName = ({target: holderName}) => {
    }

答案 5 :(得分:0)

这应该可以解决:

const detectCardType = ({target}) => {
    return target;
  } 

  const validateCardExpiryDate = ({target}) => {
    return target;
  }

  const validateCardHolderName = ({target}) => {
    return target;
  }

答案 6 :(得分:0)

感谢大家的贡献,这解决了它。 我以前犯的错误是我两次被 破坏

const detectCardType = ({target}) => {}

答案 7 :(得分:0)

如果您不需要explicit returns,则应该可以。

const detectCardType = ({target}) => {
        return target;
      };

用于explicit returns或速记使用

const detectCardType = ({target}) => target;