Sire IMPACTUS Asked:2023-01-31 14:23:09 +0000 UTC2023-01-31 14:23:09 +0000 UTC 2023-01-31 14:23:09 +0000 UTC 获取添加到对象的最后一个键 | JS 772 有一个对象 obj = {}。 在项目中的任何时候,它都可以通过导入访问并且可以更改。我需要知道如何获取对象的最后添加的键?键可以是字符串或数字。 注意:您需要在不使用 Object.keys 和 Object.values 的情况下执行此操作。 javascript 2 个回答 Voted Best Answer Grundy 2023-01-31T16:05:19Z2023-01-31T16:05:19Z 如果字符串和数字键都有效,则没有工具可以确定添加的最后一个。无论有Object.keys没有Object.value他们。 该问题在问题How does a FOR IN loop iterate over an array? 中有详细说明。:首先绕过整数键,然后按添加顺序绕过字符串键。 这样,如果加上key只能是字符串的限制,即不能强制转换为0到2 32 -2范围内的整数,就可以使用通常的循环for..in var lastKey; for(var key in obj){ lastKey = key; } console.log(lastKey); 但是,如果最后添加数字键,一切都会中断,在这种情况下,结果将是错误的。 作为解决方案,有几种方法: 禁止在任何地方更改对象,但在一个地方,使用函数获取对象和设置属性。在这种情况下,您可以在调用添加该属性的函数时保存最后一个键。 使用Proxy并返回它,而不是原始对象。在钩子的帮助下.defineProperty,跟踪对象属性的变化并保存最后添加的键。 Andrei Popruha 2023-01-31T15:05:35Z2023-01-31T15:05:35Z 要在不使用 Object.keys 和 Object.values 的情况下将最后一个键添加到对象,可以使用 for...in 循环: for (var key in obj) { // key - последний добавленный ключ }
如果字符串和数字键都有效,则没有工具可以确定添加的最后一个。无论有
Object.keys没有Object.value他们。该问题在问题How does a FOR IN loop iterate over an array? 中有详细说明。:首先绕过整数键,然后按添加顺序绕过字符串键。
这样,如果加上key只能是字符串的限制,即不能强制转换为0到2 32 -2范围内的整数,就可以使用通常的循环
for..in但是,如果最后添加数字键,一切都会中断,在这种情况下,结果将是错误的。
作为解决方案,有几种方法:
禁止在任何地方更改对象,但在一个地方,使用函数获取对象和设置属性。在这种情况下,您可以在调用添加该属性的函数时保存最后一个键。
使用
Proxy并返回它,而不是原始对象。在钩子的帮助下.defineProperty,跟踪对象属性的变化并保存最后添加的键。要在不使用 Object.keys 和 Object.values 的情况下将最后一个键添加到对象,可以使用 for...in 循环: