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

标签 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}];

最佳答案

假设您的意思是: [{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; }

关于javascript - 比较对象并添加不匹配的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49208667/

相关文章:

javascript - js 数组解构的奇怪行为

javascript - iFrame 在 Internet Explorer 上消失

java - TypedArray 作为 Cordova 插件参数

javascript - 数组中日期的最小值/最大值?

javascript - LoDash - 如何通过公用 key 将一个集合值推送到另一个集合中

javascript - webkit 浏览器中来自 getClientRects 的 clientRect 语义

javascript - 为什么我得到一个 "df.worker.min.js” 已加载,即使它的 MIME 类型 (“text/html” 不是有效的 JavaScript MIME 类型”

javascript - 使用Mapbox从Terrain图层切换到Satellite图层

javascript - x-可编辑的帖子值未定义

javascript - 遍历表中的选择框 jQuery