You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从给定JSON数据中获取唯一financial_year值的数组?

没问题,我来帮你搞定这个需求——从给定的数组里提取每个financial_year唯一对应的条目(或者仅提取唯一的年份值,看你具体需要)。这里有几种实用的JavaScript实现方法:

方法1:保留每个年份首次出现的完整条目(推荐,保留原顺序)

这种方法用Map来跟踪已经处理过的年份,会保留原数组中每个年份第一次出现的那条数据,同时保证结果的顺序和原数组中首次出现年份的顺序一致:

var data = [{"financial_year": 2017, "revenue": 2000, "costs": 1000}, {"financial_year": 2017, "revenue": 3000, "costs": 2000}, {"financial_year": 2016, "revenue": 1000, "costs": 500},{"financial_year": 2016, "revenue": 2000, "costs": 1000}, {"financial_year": 2015, "revenue": 5000, "costs": 3000}, {"financial_year": 2015, "revenue": 2000, "costs": 1000}];

const uniqueByYear = Array.from(
  data.reduce((yearMap, item) => {
    // 仅当该年份未被记录时,才添加到Map中
    if (!yearMap.has(item.financial_year)) {
      yearMap.set(item.financial_year, item);
    }
    return yearMap;
  }, new Map()).values()
);

console.log(uniqueByYear);

输出结果里,2017会保留第一个{"financial_year":2017,"revenue":2000,"costs":1000},2016保留第一个条目,以此类推。

方法2:仅提取唯一的年份值数组

如果你只需要得到所有不重复的年份数值,不需要完整的对象,这种写法更简洁:

const uniqueYears = [...new Set(data.map(item => item.financial_year))];
console.log(uniqueYears); // 输出: [2017, 2016, 2015]

原理是先用map把所有年份提取出来,再用Set自动去重,最后通过扩展运算符转成数组。

方法3:保留每个年份最后出现的条目

如果你的需求是保留每个年份最后一次出现的那条数据,只需要修改Map的逻辑,每次都覆盖已有记录:

const uniqueByLastYear = Array.from(
  data.reduce((yearMap, item) => {
    // 每次都覆盖,最后保留的就是该年份最后出现的条目
    yearMap.set(item.financial_year, item);
    return yearMap;
  }, new Map()).values()
);

比如2017会保留{"financial_year":2017,"revenue":3000,"costs":2000}这条。

兼容旧JavaScript环境的写法

如果需要兼容ES6之前的环境,可以用普通循环加对象跟踪:

var uniqueByYear = [];
var seenYears = {};

for (var i = 0; i < data.length; i++) {
  var currentItem = data[i];
  // 检查该年份是否已经被记录过
  if (!seenYears[currentItem.financial_year]) {
    seenYears[currentItem.financial_year] = true;
    uniqueByYear.push(currentItem);
  }
}

console.log(uniqueByYear);

内容的提问来源于stack exchange,提问作者Hannan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:12:53