Javascript如何拆分JSON数组,从数字中找到最大值,然后获取名称?
我有一个带有数组的外部JSON文件,其中包含一些我需要的信息,但我一辈子都不知道如何拆分它Javascript如何拆分JSON数组,从数字中找到最大值,然后获取名称?,javascript,arrays,json,Javascript,Arrays,Json,我有一个带有数组的外部JSON文件,其中包含一些我需要的信息,但我一辈子都不知道如何拆分它 { "video": "incoming2.mp4", "description": "Updated every 30 minutes: - Created 2015-07-07 14:45:29 EST", "title": "304 Angstrom Last 3 days", "timestamp": "2015-07-07 14:45:29 EST",
{
"video": "incoming2.mp4",
"description": "Updated every 30 minutes: - Created 2015-07-07 14:45:29 EST",
"title": "304 Angstrom Last 3 days",
"timestamp": "2015-07-07 14:45:29 EST",
"sort": ["20150707144529", "incoming2.mp4"],
"thumb": "thumb/incoming2.png"
},
这是JSON文件的一小部分,您应该注意的地方是“排序”:[“20150707144529”,“incoming2.mp4”],
,我想在我的javascript中使用文件中的所有这些内容创建一个数组,并将它们拆分为数组中自己的数据,如下所示:arrayName[0]
将是“20150707144529”
而arrayName[1]
将是“incoming2.mp4”
。然后,在拆分后,我希望根据排序中的第一个数字找到最大值,并直接获取文件名,然后将其存储在变量中
(注:我知道我不太擅长措辞,所以如果你需要我澄清我的要求,就让我这么做)
编辑:
我如何调用json文件:
$(document).ready(function vidTitle() {
$.getJSON("sun.json", function(json1) {
//json stuff here
});
});
编辑2:
这是(有点像但不是真的)我完整的(-ish)json文件
[
{
"video": "incoming.mp4",
"description": "Updated every 30 minutes: - Created 2015-07-07 14:45:24 EST",
"title": "193 Angstrom Last 3 days",
"timestamp": "2015-07-07 14:45:24 EST",
"sort": ["20150707144524", "incoming.mp4"],
"thumb": "thumb/incoming.png"
},
{
"video": "incoming2.mp4",
"description": "Updated every 30 minutes: - Created 2015-07-07 14:45:29 EST",
"title": "304 Angstrom Last 3 days",
"timestamp": "2015-07-07 14:45:29 EST",
"sort": ["20150707144529", "incoming2.mp4"],
"thumb": "thumb/incoming2.png"
},
{
"video": "incoming3.mp4",
"description": "Updated every 30 minutes: - Created 2015-07-07 14:47:35 EST",
"title": "171 Angstrom Last 3 days",
"timestamp": "2015-07-07 14:47:35 EST",
"sort": ["20150707144735", "incoming3.mp4"],
"thumb": "thumb/incoming3.png"
}
//Basically, a bunch more of what is above with different data
]
您的算法可以是这样的:
videos
)max\u对象
变量设置为null
视频中的每个视频
,请查看视频的值。排序[0]
video.sort[0]
值大于max\u object.sort[0]
(或者max\u object
为空),则用video
覆盖max\u object
视频
在此过程结束时,您的
max\u对象
变量将保存具有最大排序
值的视频数据。以下是一个简化示例:
$.getJSON('sun.json', function(json) {
var max = 0;
var maxIndex = 0;
for (var index = 0; index < json.length; index++) {
var val = parseInt(json[index].sort[0]);
if (val > max) {
max = val;
maxIndex = index;
}
}
alert('highest is ' + json[maxIndex].sort[1]);
});
我删除了JSON中我们不关心的所有属性。我在一个由data
键控的数组中抛出了更多的样本数据。这只是搜索data
数组中每个对象的最高sort
值,跟踪当前最大值的索引。完成循环后,max索引
包含数组中包含最高排序值的索引
$.getJSON('sun.json', function(json) {
var max = 0;
var maxIndex = 0;
for (var index = 0; index < json.length; index++) {
var val = parseInt(json[index].sort[0]);
if (val > max) {
max = val;
maxIndex = index;
}
}
alert('highest is ' + json[maxIndex].sort[1]);
});
$.getJSON('sun.json',函数(json){
var max=0;
var-maxIndex=0;
for(var index=0;indexmax){
max=val;
maxIndex=索引;
}
}
警报('最高值为'+json[maxIndex].sort[1]);
});
输出
最高收入为2.mp4
发布您迄今为止尝试过的代码。如果没有代码,很难找到问题。这可能是一个愚蠢的问题,但我如何修改此代码以使用名为jQuery的外部文件:
$.getJSON(“sun.json”,function(json1)
?@Calebbait在我的回答中看到我更新的代码。您可以将此代码放入success函数中。此外,我不确定JSON数据的结构,因此您可能需要修改使用数据的逻辑以使用正确的属性名和索引。我需要查看更多JSON数据来帮助您完成此操作。我编辑了我的帖子显示json文件的更多结构。好的,您可以将success函数的json
(或者在您的例子中,您将其称为json1
)参数作为数组处理。看看我更新的答案,我删除了对数据的所有引用,这是我在添加示例数据时引入的一个键。