假设此JSON对象:
var obj = { "set1": [1, 2, 3], "set2": [4, 5, 6, 7, 8], "set3": [9, 10, 11, 12] };
可以像这样检索“ set2”属性:
obj["set2"]
有没有一种方法可以通过索引检索“ set2”属性?它是JSON对象的第二个属性。这是行不通的(当然):
obj[1]
因此,假设我要检索JSON对象的第二个属性,但我不知道它的名称-那么我该怎么做?
更新: 是的,我知道对象是无序属性的集合。但是我不认为浏览器会干扰JSON文字/字符串定义的“原始”顺序。
JavaScript中的对象是 无序 属性的集合。对象是哈希表。
如果希望按字母顺序排列属性,则一种可能的解决方案是在单独的数组中为属性创建索引。 这是对您的对象1的快速适应:
var obj = { "set1": [1, 2, 3], "set2": [4, 5, 6, 7, 8], "set3": [9, 10, 11, 12] }; var index = []; // build the index for (var x in obj) { index.push(x); } // sort the index index.sort(function (a, b) { return a == b ? 0 : (a > b ? 1 : -1); });
然后,您将可以执行以下操作:
console.log(obj[index[1]]);
我之前引用的答案提出了一种可重复使用的解决方案,以迭代此类对象。除非您可以将JSON更改为另一个答案中的@JacobRelkin,否则可能会更容易。
1您可能想使用该hasOwnProperty()方法来确保属性属于您的对象,并且不继承自Object.prototype。
hasOwnProperty()
Object.prototype