我正在尝试创建一个在对象中将“键”与“值”交换的函数。由于某种原因,我收到TypeError:object.entries不是一个函数。我在这里想念什么或做错什么了?
Object.defineProperty(Object.prototype, 'swapKeysValues', {
value: function() {
let obj = {};
this.entries().forEach(([key, value]) => {
obj[value] = key;
});
return obj;
}
});
进一步的测试表明:
let foo = { a: 1, b: 2, c: 3 }
typeof foo // "object"
foo instanceof Object // true
foo.entries // undefined
foo.entries() // Uncaught TypeError: foo.entries is not a function
更新:
所以我了解到的是对象(即让foo = {a:1})不继承.entries,.keys或.values函数作为属性,我必须通过调用Object.entries( foo),如tehhowch / SylvainF所指出。工作代码:
Object.defineProperty(Object.prototype, 'swapKeysValues', {
value: function() {
let obj = {};
Object.entries(this).forEach(([key, value]) => {
obj[value] = key;
});
return obj;
}
});
// Example
let foo = { a: 1, b: 2, c: 3 }
foo.swapKeysValues()
// Output
{1: "a", 2: "b", 3: "c"}
谢谢tehhowch / SylvainF!
答案 0 :(得分:0)
就像@tehhowch在评论中说的那样,语法为Object.entries(foo)
您可以看到MDn页面:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/entries