2017-02-07 27 views
0

我寫這封信是採取在一個JSON對象任意鍵纈氨酸對節點紅色功能節點:如何獲得JSON對象的第一密鑰對要素不知道鍵,刪除它在節點紅色

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

我想訪問此對象中的第一個密鑰對元素,存儲它,然後將其刪除。我已經試過許多東西,但因爲它是節點的紅色,它似乎表現不同

+1

的可能的複製[如何從一個JavaScript對象的屬性?(http://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-對象) – Dalorzo

+3

顯示你嘗試過的一件事情,以及node-red與另一個JS環境之間的行爲有何不同可能會有幫助。 – apsillers

+0

它不是重複的,因爲你發佈了關於已知密鑰的答案 - 我只想刪除第一個元素(我不能刪除myObject [30000c690b61];因爲密鑰總是變化... –

回答

3
var firstKey = Object.keys(myObject)[0]; 
delete myObject[firstKey ]; 
+0

謝謝你的工作 –

2

獲得一個JSON對象表達的「第一」要素是困難的,因爲JSON對象不打算訂購收藏。它們僅在JSON中「排序」,因爲它們必須具有字符串序列化,這是一個有序的字符序列,但具有不同順序屬性的兩個JSON對象表達式旨在傳達相同的語義。

如果你願意相信你的JavaScript環境保持迭代時鍵的排序(這是不是在ECMAScript的規範中定義的假設,但可能在您的環境實現真正的),你可以這樣做:

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

如果您不想做出這樣一個不安全的假設,您需要閱讀JSON字符串並手動確定第一組引號之間的密鑰名稱。這需要付出一些努力,因爲您還必須處理可能出現在密鑰名稱本身內的轉義引號。

+0

謝謝。是的,我將不得不考慮,因爲我需要確保訂單得到保證。 –

0

以下代碼將從JSON對象中獲取First元素密鑰對並刪除它。

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; 
}); 
相關問題