2016-02-27 146 views
1
var myObj={ 
     age: null, 
     anothercolumn: null, 
     caseNum: null, 
     casecount: null, 
     casecountfgfg: null, 
     city: null, 
     country: null, 
     county: null 
    } 

我必須更改位於第3個位置的鍵名。 信息我只有新的關鍵名稱和位置。如何獲取鍵值對的索引

myObj[2] = 'new value' 

請建議

+2

這是問題:在每個瀏覽器中,關聯數組的默認順序不一樣。在更改它們之前,請務必按字母順序排序鍵,因爲在某些瀏覽器中可能會出現意外。 – blex

+0

@Tushar OP想更改密鑰的名稱。以及你不能保證對象的密鑰索引。 –

+0

@blex:因此,我需要的信息是我將要修改的密鑰,而不是正確的位置 – Prashobh

回答

1

非常小心!在ES2015之前,沒有指定屬性鍵的順序。所以它只是可以改變,並且不同於瀏覽器到瀏覽器。

In ES2015 the order is specified as the order of creation

所以你不能做你想要的東西

唯一可能的方法是創建一個新的對象並按照您想要的順序應用這些鍵。我可以推薦不依賴於對象鍵的順序!

1

正如@Lux所述,在ES2015之前未指定屬性鍵的順序。所以它只是可以改變,並且不同於瀏覽器到瀏覽器。然而,變通遍歷對象得到鍵值信息看你要替換什麼鍵,然後環周圍的物體更換要更換如下關鍵:

var myObject =[{"apple":"1"},{"ball":"3"},{"cat":"wer"},{"Nepal":"beautiful"},{"cat":"wer"}];//mock object 
      for (var key in myObject) { 
     if (myObject.hasOwnProperty(key)) { 
      console.log("Key: " + key + ", Value: " + JSON.stringify(myObject[key])); 
     } 
    } 
//if i want to replace all the cat key, then: 
    for (var i = 0; i < myObject.length; i++) { 
     myObject[i].catReplaced = myObject[i]['cat']; 
     delete myObject[i].cat; 
    } 

PLUNKER:Removing a particular key from an object