Javascript 如何将缺少的对象添加到数组中?

Javascript 如何将缺少的对象添加到数组中?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个对象数组,每个对象都有一个reportYear和reportWeek属性。目前,这些对象仅涵盖从开始日期到结束日期的几周和几年。如何插入更多对象来填充缺少的几周的数组 例如: 输入: [ {"reportYear":2017,"reportWeek":49,"employeeCode":100,"employeeName":"Peter","importanceDegree":182.0}, {"reportYear":2017,"reportWeek":52,"employee

我有一个对象数组,每个对象都有一个
reportYear
reportWeek
属性。目前,这些对象仅涵盖从开始日期到结束日期的几周和几年。如何插入更多对象来填充缺少的几周的数组

例如:

输入:

[
  {"reportYear":2017,"reportWeek":49,"employeeCode":100,"employeeName":"Peter","importanceDegree":182.0},
  {"reportYear":2017,"reportWeek":52,"employeeCode":100,"employeeName":"Peter","importanceDegree":77.0},
  {"reportYear":2018,"reportWeek":2,"employeeCode":100,"employeeName":"Peter","importanceDegree":101.0},
]
输出:

[
  {"reportYear":2017,"reportWeek":49,"employeeCode":100,"employeeName":"Peter","importanceDegree":182.0},
  {"reportYear":2017,"reportWeek":50,"employeeCode":100,"employeeName":"Peter","importanceDegree":0},
  {"reportYear":2017,"reportWeek":51,"employeeCode":100,"employeeName":"Peter","importanceDegree":0},
  {"reportYear":2017,"reportWeek":52,"employeeCode":100,"employeeName":"Peter","importanceDegree":77.0},
  {"reportYear":2018,"reportWeek":1,"employeeCode":100,"employeeName":"Peter","importanceDegree":0},
  {"reportYear":2018,"reportWeek":2,"employeeCode":100,"employeeName":"Peter","importanceDegree":101.0},
]

您需要从开始的
reportYear
reportWeek
经历一个循环,搜索匹配的项目,将项目添加到数组中(如果不存在),然后增加周数(如果需要,增加年数),直到到达最后的周数和年数:

const数据=[
{“报告年度”:2017,“报告周刊”:49,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:182.0},
{“报告年度”:2017,“报告周刊”:51,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:231.0},
{“报告年度”:2017,“报告周刊”:52,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:77.0},
{“报告年度”:2018,“报告周刊”:1,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:55.0},
{“报告年度”:2018,“报告周刊”:2,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:101.0},
{“报告年度”:2018,“报告周刊”:3,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:982.0},
{“报告年度”:2018,“报告周刊”:4,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:744.0},
{“报告年度”:2018,“报告周刊”:8,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:698.0},
{“报告年度”:2018,“报告周刊”:9,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:235.0},
{“报告年度”:2018,“报告周刊”:12,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:657.0},
{“报告年度”:2018,“报告周刊”:13,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:251.0},
{“报告年度”:2018,“报告周刊”:14,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:147.0},
{“报告年度”:2018,“报告周”:15,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:156.0},
{“报告年度”:2018,“报告周刊”:19,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:481.0},
{“报告年度”:2018,“报告周刊”:20,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:639.0},
{“报告年度”:2018,“报告周刊”:21,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:256.0},
{“报告年度”:2018,“报告周刊”:30,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:324.0},
{“报告年度”:2018,“报告周刊”:31,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:852.0},
{“报告年度”:2019,“报告周刊”:3,“员工代码”:100,“员工姓名”:“彼得”,“重要程度”:361.0},
];
年份=2017年;
让周=49;
而(年=2019年| |周=3){
const foundObjectIndex=data.findIndex(
({reportYear,reportWeek})=>reportYear==year&&reportWeek==week
);
如果(foundObjectIndex==-1){
数据推送({
报告年度:年,
报告周:周,
员工代码:100,
员工名称:“彼得”,
重要程度:0,
});
}
周++;
如果(周===53){
周=1;
年份++;
}
}
数据排序((a,b)=>{
如果(a.reportYear!==b.reportYear)返回a.reportYear-b.reportYear;
如果(a.reportWeek!=b.reportWeek)返回a.reportWeek-b.reportWeek;
返回b.importanceDegree-a.importanceDegree;
});

控制台日志(数据)a.reporterYear-b.reporterYear | | a.reporterWeek-b.reporterWeek
@Rhaegal您的问题很不清楚,我误解了。请参见编辑。@CertainPerformance先生,我能用'var'代替'let'和'const'吗?和'=>',这是JS语法吗?@Rhaegal如果您是在任何现代环境中开发的,您的应该使用
const
let
和其他ES6+语法,它们的行为比
var
更可预测,但是如果您在发布到产品之前不想麻烦使用Babel,并且需要支持古老的浏览器,那么就继续使用
var
function(){
而不是箭头函数。是的,
=>
是一个箭头函数。@CertainPerformance先生,如果我需要使用“var”,如何修改你的“=>”?你能给我一个旧版本的代码吗?