获取 JSON 文件中的前 10 个值

Getting top 10 Values in a JSON File

本文关键字:个值 JSON 文件 获取      更新时间:2023-09-26

这是我的JSON文件的一个示例。

[
    {"Variable":"Hello","Variable1":20}, {"Variable":"Hi","Variable1":30},
    {"Variable":"How","Variable1":40}, {"Variable":"Who","Variable1":50},
    {"Variable":"Where","Variable1":60}, {"Variable":"This","Variable1":100},
    {"Variable":"Pork","Variable1":10}, {"Variable":"Creep","Variable1":90},
    {"Variable":"Mega Creeps","Variable1":80}, {"Variable":"LOL","Variable1":0},
    {"Variable":"ROFL","Variable1":0}, {"Variable":"LMAO","Variable1":0},
    {"Variable":"POP","Variable1":0}, {"Variable":"LOVE","Variable1":0},
    {"Variable":"PICK","Variable1":0}, {"Variable":"WHIZ","Variable1":0},
    {"Variable":"BORED","Variable1":0}, {"Variable":"KILLAH","Variable1":0},
    {"Variable":"LOLLING","Variable1":0}, {"Variable":"HALOO  HALOO","Variable1":0}
]

如何从最高变量 1 数到最低数仅获取前 10 名?但是将 JSON 文件以相同的格式传递。

首先,将 JSON 解析为对象数组:

var data = JSON.parse(json);

然后结合sortslice来实现您的目标:

var top10 = data.sort(function(a, b) { return a.Variable1 < b.Variable1 ? 1 : -1; })
                .slice(0, 10);

参见 Array.sort

你可以用 Alasql JavaScript 库来做到这一点。它下载json文件,解析它,然后运行SQL 语句。这是一个如何直接从 JSON 文件中获取前 10 个的示例:

<script src="alasql.min.js></script>
<script>
    alasql("SELECT TOP 10 * FROM JSON('mydata.json') ORDER BY Variable1 DESC",[], function(top10){
        console.log(top10);
    });
</script>

或者,如果内存中已有数据:

    var data = [{"Variable":"Hello","Variable1":20},{"Variable":"Hi","Variable1":30}];
    var res = alasql("SELECT TOP 10 * FROM ? ORDER BY Variable1 DESC",[data]);

在 jsFiddle 中尝试此示例。