2016-02-27 149 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