javascript - 使用平面数组过滤 JSON 对象

标签 javascript json

我有带有数组对的 JSON 对象,如下所示:

Object {x: Array[36159], y: Array[36159], year: Array[36159]}

以小样本为例:

{
    "x": [309339618361.619, 102862032084.12102, 72892839276.09761, 46463392384.54194, -39360182208.042145],
    "y": [13950252.45052416, 1158787.402385158, -4368238.261400843, 1339913.7393283844, 2085336.6277048483],
    "year": [1991, 1991, 1992, 1992, 1992]
}

我想按年过滤这个对象。如果 JSON 数据是数组或键、值对,我可以使用过滤器:

data.filter(function (x) {
    return x.year == 1991
});

但由于 JSON 结构是成对的平面数组,我不知道如何处理。


想要的结果是这样的:

{
    "x": [309339618361.619, 102862032084.12102],
    "y": [13950252.45052416, 1158787.402385158],
    "year": [1991, 1991]
}

最佳答案

您可以使用带有比较的回调和属性数组,您希望在其上应用过滤器。

var object = {
        "x": [309339618361.619, 102862032084.12102, 72892839276.09761, 46463392384.54194, -39360182208.042145],
        "y": [13950252.45052416, 1158787.402385158, -4368238.261400843, 1339913.7393283844, 2085336.6277048483],
        "year": [1991, 1991, 1992, 1992, 1992]
    },
    result = {};

['x', 'y', 'year'].forEach(function (p) {
    result[p] = object[p].filter(function (a, i) {
        return object.year[i] === 1991;
    });
});

console.log(result);

关于javascript - 使用平面数组过滤 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161363/

相关文章:

javascript - 在 Razor 部分 Html BeginForm 中停止回发时的页面移动

javascript - 确保邻居节点不共享相同的值

java - JSONObject 排序的 map 参数

javascript - 有选择地展平嵌套 JSON 结构

javascript - 如何使用 progressBar.js 在特定路径上放置渐变?

android - 奇怪的 Google Play Batch IAP API 错误

json - Swagger UI 在响应正文中返回 "no content",响应代码为 0

java - 如何使用 Camel jackson 将 JSONArray 转换为对象列表

java - Android 无法转换为 JSONObject 错误

javascript - HTML5 我可以将 <img> 与 <source> 一起使用吗