我有一个查找对象,它的关键字是tourIds,值是该浏览的可用目的地。
用户应该能够选择各个城市。然而,我需要禁用城市,这些城市是不可用的旅游目的地的基础上选定的城市由用户。
举个例子,我们有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数组的最佳方法是什么?
发布于 2018-01-15 14:56:12
我不确定我是否完全理解,但我猜你想要过滤主要列表到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)
https://stackoverflow.com/questions/48257398
复制相似问题