如何在不知道密钥的情况下获取JSON对象的第一个密钥对元素,并在节点红色中删除它

Sha*_*man 6 javascript json node-red

我正在编写一个node-red的函数节点,它接受一个带有任意键值对的JSON对象:

{ 30000c690b61: "m8Jp_M7Lc0",
  30000c290bdc65: "S3qg3Rkl8Y", 
  30000c290bdf1c: "KsLpfVrR4W", 
  30000c290be5d0: "oXasuCWV_q", 
  30000c29e618: "6Q67v-gJkS" … }
Run Code Online (Sandbox Code Playgroud)

我想访问此对象中的第一个键对元素,存储它,然后将其删除.我尝试了很多东西,但由于它是节点红色,它似乎表现不同

Vla*_*nut 13

var firstKey = Object.keys(myObject)[0];
delete myObject[firstKey ];
Run Code Online (Sandbox Code Playgroud)


aps*_*ers 11

获取 JSON 对象表达式的“第一个”元素很困难,因为 JSON 对象不是有序集合。它们在 JSON 中“有序”只是因为它们必须有一个字符串序列化,它是一个有序的字符序列,但两个具有不同排序属性的 JSON 对象表达式旨在传达相同的语义。

如果您愿意相信您的 JavaScript 环境在迭代时保留键的顺序(这不是 ECMAScript 规范中定义的假设,但在您的环境实现中可能是正确的),您可以执行以下操作:

var myObj = JSON.parse("{ ... }");
var firstKey = Object.keys(myObj)[0];
delete myObj[firstKey];
Run Code Online (Sandbox Code Playgroud)

如果不想做出这样不安全的假设,则需要读取 JSON 字符串并手动确定第一组引号之间的键名。这需要付出一些努力,因为您还必须处理可能出现在键名本身中的转义引号。