我在JS中有以下对象:
[
{
"financial_year":1,
"mainline_revenue":18743.0,
"regional_revenue":2914.0,
"other_revenue":3198.0,
"non_operating_items":-1983.0
},
{
"financial_year":2,
"mainline_revenue":20218.0,
"regional_revenue":3131.0,
"other_revenue":3394.0,
"non_operating_items":-3233.0
},
{
"financial_year":3,
"mainline_revenue":30802.0,
"regional_revenue":6322.0,
"other_revenue":5526.0,
"non_operating_items":-1367.0
}
]
financial_year 是我想用来过滤数据的唯一标识符。如何过滤数据,例如financial_year为2,并将其他值放在数组中?
答案 0 :(得分:4)
您可以在数组上使用filter
方法。 filter
采用返回true或false的回调(更准确地说,是真值或假值)。如果返回true,则该对象包含在结果数组中。
let input = [
{
"financial_year":1,
"mainline_revenue":18743.0,
"regional_revenue":2914.0,
"other_revenue":3198.0,
"non_operating_items":-1983.0
},
{
"financial_year":2,
"mainline_revenue":20218.0,
"regional_revenue":3131.0,
"other_revenue":3394.0,
"non_operating_items":-3233.0
},
{
"financial_year":3,
"mainline_revenue":30802.0,
"regional_revenue":6322.0,
"other_revenue":5526.0,
"non_operating_items":-1367.0
}
];
let output = input.filter((obj) => obj.financial_year !== 2);
console.log(JSON.stringify(output, null, 2));

或用ES5重写:
var input = [
{
"financial_year":1,
"mainline_revenue":18743.0,
"regional_revenue":2914.0,
"other_revenue":3198.0,
"non_operating_items":-1983.0
},
{
"financial_year":2,
"mainline_revenue":20218.0,
"regional_revenue":3131.0,
"other_revenue":3394.0,
"non_operating_items":-3233.0
},
{
"financial_year":3,
"mainline_revenue":30802.0,
"regional_revenue":6322.0,
"other_revenue":5526.0,
"non_operating_items":-1367.0
}
];
var output = input.filter(function(obj) {
return obj.financial_year !== 2;
});
console.log(JSON.stringify(output, null, 2));