【问题标题】:generating excluded list based on a map and dynamic user selection基于地图和动态用户选择生成排除列表
【发布时间】:2018-06-23 18:05:38
【问题描述】:

我有一个查找对象,其中键是 tourId,值是该游览的可用目的地。

用户应该能够选择各个城市。但是,我需要根据用户选择的城市禁用不可作为旅游目的地的城市。

例如,假设我们有 3 个城市的列表:罗马、佛罗伦萨和威尼斯,并且有一个游览佛罗伦萨和威尼斯的旅游。所以如果用户选择佛罗伦萨和威尼斯,罗马必须被禁用。

这是我的查找

{
    "1": ["Paris"],
    "2": ["London"],
    "3": ["Rome"],
    "4": ["Florence"],
    "5": ["Venice"],
    "12": ["Paris", "London"],
    "13": ["Paris", "Rome"],
    "14": ["Paris", "Florence"],
    "15": ["Paris", "Venice"],
    "21": ["London", "Paris"],
    "23": ["London", "Rome"],
    "24": ["London", "Florence"],
    "25": ["London", "Venice"],
    "123": ["Paris", "London", "Rome"],
    "124": ["Paris", "London", "Florence"],
    "125": ["Paris", "London", "Venice"],
    "213": ["London", "Paris", "Rome"],
    "214": ["London", "Paris", "Florence"],
    "215": ["London", "Paris", "Venice"],
    "1234": ["Paris", "London", "Rome", "Florence"],
    "1235": ["Paris", "London", "Rome", "Venice"],
    "2134": ["London", "Paris", "Rome", "Florence"],
    "2135": ["London", "Paris", "Rome", "Venice"],
    "21345": ["London", "Paris", "Florence", "Venice"]
}

并假设用户选择了这两个城市:

selecteddCities = ["Venice", "Florence"]

我需要一个数组 disabledCities,其中包括根据当前选择的城市没有前往该目的地的旅游的城市。在这种情况下是罗马。因为没有涵盖威尼斯、佛罗伦萨和罗马的巡演。

ES6 和 Lodash 都可以使用。生成 disabledCities 数组的最佳方法是什么?

【问题讨论】:

    标签: javascript arrays object ecmascript-6 lodash


    【解决方案1】:

    我不确定我是否完全理解,但我猜您想将主要列表过滤为 2 个列表启用游览和禁用游览。并且要启用游览,它需要包含所有用户选择的城市。这是一些示例代码,可根据用户选择的数组过滤掉这些。

    var tours = [
        {tourIds : "1", cities : ["Paris"]},
        {tourIds : "2", cities : ["London"]},
        {tourIds : "3", cities : ["Rome"]},
        {tourIds : "4", cities : ["Florence"]},
        {tourIds : "5", cities : ["Venice"]},
        {tourIds : "12", cities : ["Paris", "London"]},
        {tourIds : "13", cities : ["Paris", "Rome"]},
        {tourIds : "14", cities : ["Paris", "Florence"]},
        {tourIds : "15", cities : ["Paris", "Venice"]},
        {tourIds : "21", cities : ["London", "Paris"]},
        {tourIds : "23", cities : ["London", "Rome"]}
    ]
    
    var userSelCities = ['Paris','London']
    
    
    
    var areCitiesInTour = function(tour){
    
        var CitiesFound = 0
    
            for (var i = 0; i < tour.cities.length; i++) {
    
                for (var x = 0; x < userSelCities.length; x++) {
                    if (tour.cities[i] === userSelCities[x]) {
                        CitiesFound += 1;
                    }
                }
            }
    
    
        return(CitiesFound === userSelCities.length);
    }
    
    var areCitiesNotInTour = function(tour){
    
        var CitiesFound = 0
    
        for (var i = 0; i < tour.cities.length; i++) {
    
            for (var x = 0; x < userSelCities.length; x++) {
                if (tour.cities[i] === userSelCities[x]) {
                    CitiesFound += 1;
                }
            }
        }
    
    
        return(CitiesFound !== userSelCities.length);
    }
    
        var enableTours =  tours.filter(areCitiesInTour)
        var disabledTours = tours.filter(areCitiesNotInTour)
    
        console.log(enableTours)
        console.log(disabledTours)

    【讨论】:

      猜你喜欢
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2018-04-02
      • 2017-02-03
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      相关资源
      最近更新 更多