比较对象并添加不匹配的元素

时间:2018-03-10 11:42:04

标签: javascript

我反对那些员工计划在那天工作的日子。在网站上我需要将剩余的一天显示为休假。如果为员工分配了两个不同的班次,则该对象可以有两个元素。

var WorkDays = [{day:3}, {day:3}, {day:1}, {day:1}, {day:0}];
var days = [0, 1, 2, 3, 4, 5, 6}];

新创建的WordDays应该看起来像这样

 WorkDays = [{day:0}, {day:1}, {day:1},{day:2}, {day:3}, { day:3} ,{ day:4}, {day:5}, {day:6}];

1 个答案:

答案 0 :(得分:1)

假设您的意思是: [{day:0}, {day:1},...]

您可以使用reduce功能。



var WorkDays = [{day:3}, {day:3}, {day:1}, {day:1}, {day:0}],    
    days = [0, 1, 2, 3, 4, 5, 6],
    result = days.reduce((days, c) => {
      if (!days.some(({day}) => day === c)) days.push({day: c});
      return days;
    }, WorkDays).sort((a, b) => a.day - b.day);
    
    console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }