首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于地图和动态用户选择生成排除列表

基于地图和动态用户选择生成排除列表
EN

Stack Overflow用户
提问于 2018-01-15 13:31:46
回答 1查看 51关注 0票数 1

我有一个查找对象,它的关键字是tourIds,值是该浏览的可用目的地。

用户应该能够选择各个城市。然而,我需要禁用城市,这些城市是不可用的旅游目的地的基础上选定的城市由用户。

举个例子,我们有3个城市的列表:罗马,弗洛伦萨和威尼斯,并且有一次去参观弗洛伦萨和威尼斯的旅行。因此,如果用户选择了弗洛伦萨和威尼斯,则必须禁用罗马。

这是我的查找

代码语言:javascript
复制
{
    "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"]
}

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

代码语言:javascript
复制
selecteddCities = ["Venice", "Florence"]

我需要有一个数组,disabledCities,它包括没有到目的地的旅行的城市,这取决于当前选择的城市。在这种情况下是罗马。因为没有去威尼斯、佛罗伦萨和罗马的巡回演出。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 14:56:12

我不确定我是否完全理解,但我猜你想要过滤主要列表到2个列表启用的旅游,和禁用的旅游。要启用浏览,它需要包含用户选择的所有城市。下面是一些示例代码,用于根据用户选择的数组过滤掉这些内容。

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48257398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档