如何解构带字符串键名的对象以获取releases的首个键名?
解决方法:获取对象第一个键名的正确方式
你之前的写法行不通,原因有两个:
- 对象解构的核心是匹配对象的属性值,不是直接提取键名;
- 解构模式里不能直接用
Object.keys()这种动态表达式作为属性名来匹配。
要获取releases的第一个键名,最直接的方式是利用Object.keys()返回键名数组的特性,直接解构这个数组:
const game = { title: "YS", developer: "Falcom", releases: { "Oath In Felghana": ["USA", "Japan"], "Ark Of Napishtim": { US: "20 USD", JAP: "10 USD", }, Origin: "30 USD", }, }; // 直接解构键名数组的第一个元素 const [keyName] = Object.keys(game.releases); console.log(keyName); // 输出 "Oath In Felghana"
补充说明
- ES2015及以后,对象的字符串键会按照插入顺序排列,所以
Object.keys()返回的数组顺序和对象里键的定义顺序一致; - 如果非要用对象解构的思路(其实没必要绕路),可以先把键名存到变量,再通过计算属性匹配,但这是拿值的操作,和你要键名的需求无关,所以不推荐。
内容的提问来源于stack exchange,提问作者B-M Amine
相关产品推荐
相关产品推荐

