web-dev-qa-db-ja.com

キーを知らずに赤のノードでそれを削除せずにJSONオブジェクトの最初のキーペア要素を取得する方法

任意のキーvalのペアを持つJSONオブジェクトを取り込む関数ノードをnode-redで記述しています。

{ 30000c690b61: "m8Jp_M7Lc0",
  30000c290bdc65: "S3qg3Rkl8Y", 
  30000c290bdf1c: "KsLpfVrR4W", 
  30000c290be5d0: "oXasuCWV_q", 
  30000c29e618: "6Q67v-gJkS" … }

このオブジェクトの最初のキーペア要素にアクセスし、保存してから削除します。私は複数のことを試しましたが、ノードが赤なので、動作が異なるようです

7
Sharon Soleman
var firstKey = Object.keys(myObject)[0];
delete myObject[firstKey ];
17
Vladu Ionut

JSONオブジェクトは順序付けられたコレクションを意図していないため、JSONオブジェクト式の「最初の」要素を取得することは困難です。 JSONで「順序付け」されているのは、文字の順序付けされたシーケンスである文字列シリアル化が必要なためです。ただし、順序が異なるプロパティを持つ2つのJSONオブジェクト式は、同一のセマンティクスを伝えることを目的としています。

反復時にキーの順序を維持するためにJavaScript環境を信頼することをいとわない場合(ECMAScript仕様で定義されている前提ではありませんが、環境の実装では当てはまる可能性があります)、次のことができます。

var myObj = JSON.parse("{ ... }");
var firstKey = Object.keys(myObj)[0];
delete myObj[firstKey];

このような危険な仮定をしたくない場合は、JSON文字列を読み取り、最初の引用符セット間のキー名を手動で決定する必要があります。キー名自体に含まれる可能性のあるエスケープされた引用符も処理する必要があるため、これには多少の労力が必要です。

4
apsillers

次のコードは、JSONオブジェクトから最初の要素のキーペアを取得して削除します。

var resultJSON = '{ "30000c690b61": "m8Jp_M7Lc0",
  "30000c290bdc65": "S3qg3Rkl8Y", 
  "30000c290bdf1c": "KsLpfVrR4W", 
  "30000c290be5d0": "oXasuCWV_q", 
  "30000c29e618": "6Q67v-gJkS"}';
var result = $.parseJSON(resultJSON);
$.each(result, function(k, v) {
  //display the key and value pair
  alert(k + ' is ' + v);
  //For Delete the first key pair
   delete result['k'];
  exit;
});
0
Thilak