我有带有数组对的JSON对象,如下所示:
以小样本为例:
{
"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);