能否使用变量来解构一个对象?

4

我最近回答了一个问题,提供了以下代码作为答案:

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)

但最终出现了这个错误:

未捕获的语法错误:意外的标记“}”

是否可以使用变量名(或在这种情况下是参数)来解构一个对象?
1个回答

6
你可以使用 计算属性名 和一个新变量来赋值一个对象属性(参考自 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 },我以为会有类似的东西。 - Kobe
无法使用计算变量,只能使用计算属性(作为对象的一部分),这需要一个真实的(在之前已知的)变量。 - Nina Scholz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接