对不起,如果这个问题是重复的,但我不得不问。我正在使用原型JS从文件中读取JSON数据。 JSON数据看起来像这样;
{
"metaData": {
"date": "2014-10-06"
},
"listOf": [
{
"fname": "bill",
"id": 23
},
{
"fname": "tom",
"id": 35
},
{
"fname": "jerry",
"id": 12
},
{
"fname": "batman",
"id": 68
},
{
"fname": "superman",
"id": 55
},
{
"fname": "sp-m/super",
"id": 55
},
]
}
在我的代码中,我需要访问“listOf”键/数组,然后我想遍历每个元素并根据“fname”键对这些元素进行排序。我正在通过ajax请求读取这些数据。以下是该代码;
new Ajax.Request('/file.json', {
method:'get',
onSuccess: function(transport){
var json = transport.responseText.evalJSON();
console.log(json);
}
});
现在VAR JSON包含require数据,但我不知道如何访问“listOf”数据并迭代它。
我尝试使用像这样的.each函数;
json.list.each(alert);
但它只打印“object OBJECT”。
请帮我解决一下这个问题。
P.S:请使用原型JS作为答案,但不要使用Jquery。
答案 0 :(得分:1)
您可以使用其名称访问listOf
集合属性:
json.listOf
因此,如果您想对数组进行排序,可以尝试使用.sort()
javascript方法:
json.listOf.sort(function(a, b) {
if (a.fname > b.fname) {
return 1;
} else if (a.fname < b.fname) {
return -1;
}
return 0;
});
// At this stage json.listOf will contain the sorted in-place array using the `fname` property
这里有sample jsfiddle
说明了这一点。