首页 > 解决方案 > 将过滤器中的数组元素与另一个数组的其他元素进行比较

问题描述

我尝试显示一行'可用性,但我想排除可用性与另一个数组中元素的值相似的值'日期'

开始时间结束时间和持续时间

  1. 如何将它们与“日期”数组的其他元素进行比较?
  2. 例如,如何仅比较一个特定值只是持续时间?
var date: [{
      client: 'jessica',
      start: '10:00',
      end: '10:30',
      duration: 30,
    },

    {
      client: 'joe',
      start: '11:00',
      end: '12:00',
      duration: 60,

    }
  ],

  var availabilities: [{
        start: '10:00',
        end: '10:30',
        duration: 30,
      },


      {

        start: '11:00',
        end: '12:00',
        duration: 60,

      },

      {
        start: '12:00',
        end: '13:00',
        duration: 60,

      },

      {
        start: '13:00',
        end: '14:00',
        duration: 60,

      },


    ],


    {
      disponibilitie.filter(availabilities =>
        availabilities.start !== date.start &&
        availabilities.end !== date.end &&
        availabilities.duration !== date.duration).map((availabilities) => {
        return ( <option value = {
            availabilities.duration
          } >
          {
            availabilities.start
          } - {
            availabilities.end
          } </option>
        )
      })
    }

预期结果:{开始:'12:00',结束:'13:00',持续时间:60,js

标签: javascriptarraysarray-map

解决方案


1 - 如何将它们与“日期”数组的其他元素进行比较?

availabilities.filter((el) => {
  return date.some((f) => {
    return el.start === f.start && el.end === f.end && el.duration === f.duration;
  });
});

2-例如,如何仅比较一个特定值只是持续时间?

availabilities.filter((el) => {
  return date.some((f) => {
    return el.duration === f.duration;
  });
});

你可以加 ”!” 如果您想要不匹配的项目,请在“date.some”之前。


推荐阅读