【问题标题】:Is it possible to use a variable to destructure an object?是否可以使用变量来解构对象?
【发布时间】:2019-10-28 01:59:27
【问题描述】:

我最近用这个代码回答了一个问题:

var jobs= [
  {"startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior",},
  {"startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior"}
]

// Answer
const findObject = (obj, prop, value) => obj.filter(obj => obj[prop] === value)
console.log(findObject(jobs, 'seniority', 'Senior'))

我试图像这样解构过滤器中的对象:

const findObject = (obj, prop, value) => obj.filter(({[prop]}) => prop === value)

但最终出现了这个错误:

Uncaught SyntaxError: Unexpected token }

是否可以使用变量(或本例中的参数)名称来解构对象?

【问题讨论】:

    标签: javascript ecmascript-6 destructuring


    【解决方案1】:

    您可以使用 computed property names 和带有 object property assignment pattern [YDKJS: ES6 & Beyond] 的值的新变量。

    const findObject = (obj, prop, value) => obj.filter(({ [prop]: v }) => v === value)
    
    var jobs = [{ startDate: "5/2017", endDate: null, isCurrent: true, seniority: "Senior" }, { startDate: "5/2013", endDate: "5/2019", isCurrent: false, seniority: "Junior" }];
    
    console.log(findObject(jobs, 'seniority', 'Senior'));

    【讨论】:

    • 是的,我以前见过这个。 [prop]: v 没有简写吗?我会假设该对象会将值分配给它自己?例如,如果a = 0 而不是写obj = { a: a } 你可以写obj = { a },我认为会有类似的东西。
    • 不可能使用计算变量,只能使用计算属性(作为对象的一部分),这需要一个真实的(之前已知的)。
    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2011-01-26
    相关资源
    最近更新 更多