使用平面数组过滤JSON对象
Filter JSON object with flat arrays
我有JSON对象与数组对,像这样:
对象{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数据是数组或键、值对,我可以使用filter:
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);
您可以使用reduce()
并按您想要过滤的年份索引添加值。
var obj = {
"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]
}
var result = obj.year.reduce(function(r, e, i) {
if (e == 1991) {
r.x = (r.x || []).concat(obj.x[i]);
r.y = (r.y || []).concat(obj.y[i]);
r.year = (r.year || []).concat(obj.year[i])
}
return r;
}, {});
console.log(result)
简单地复制obj
并迭代year
属性的元素并删除不等于1991
的元素。
var obj = {
x: [309339618361.619, 102862032084.12102],
y: [13950252.45052416, 1158787.402385158],
year: [1991, 1991]
},
scan = {};
Object.assign(scan, obj);
for(var i = 0, len = scan.year.length; i < len; i ++) {
if(scan.year[i] !== 1991) {
scan.year.splice(i, 1);
}
}
console.log(scan);
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象