我有带有数组对的 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/