我有四种不同的过滤器,它们是选择框:过滤器A,过滤器B,过滤器C和过滤器D。
每次,当最终用户更新这些选择时,将返回四个数组。那些返回的结果是filterAResultArr,filterBResultArr,filterCResultArr和filterDResultArr。
如果用户没有从选择框中选择任何内容,则将返回一个空数组。
//initiate
var filterAResultArr= [];
var filterBResultArr= [];
var filterCResultArr = [];
var filterDResultArr= [];
var filterSeResult = [];
我要实现的目标如下:
如果返回一个非空数组
if(//在filterAResultArr,filterBResultArr,filterCResultArr和filterDResultArr中,只有一个数组不为空)
{filterSeResult =(不为空的过滤器结果。)}
if(filterAResultArr &&!filterBResultArr &&!filterCResultArr &&!filterDResultArr){
filterSeResult = filterAResultArr
}
if(!filterAResultArr && filterBResultArr &&!filterCResultArr &&!filterDResultArr){
filterSeResult = filterAResultArr
}
if(!filterAResultArr &&!filterBResultArr && filterCResultArr &&!filterDResultArr){
filterSeResult = filterAResultArr
}
if(!filterAResultArr &&!filterBResultArr &&!filterCResultArr && filterDResultArr){
filterSeResult = filterAResultArr
}
如果仅返回两个非空数组
如果返回三个非空数组
如果返回四个非空数组
有什么方法可以使代码具有逻辑性,而不检查每个条件?检查所有条件看起来真是愚蠢。
最佳答案
尝试
//initiate
var filterAResultArr= [1,2];
var filterBResultArr= [2,1];
var filterCResultArr = [1];
var filterDResultArr= [];
var filterSeResult = [];
// combine the array
var combine_array = [filterAResultArr, filterBResultArr,filterCResultArr,filterDResultArr];
// filter out the array is not empty
filterSeResult = combine_array.filter(function( v ) {
return v.length > 0;
});
// concat the result from array filter
// filterSeResult = pick_result.map(function(a) {
// return filterSeResult.concat(a);
// });
console.log( filterSeResult );
// Result
/*
[
[
1,
2
],
[
2,
1
],
[
1
]
]
*/
//initiate
var filterAResultArr= [1,2];
var filterBResultArr= [2,1];
var filterCResultArr = [1];
var filterDResultArr= [];
var filterSeResult = [];
// combine the array
var combine_array = [filterAResultArr, filterBResultArr,filterCResultArr,filterDResultArr];
// filter out the array is not empty
var pick_result = combine_array.filter(function( v ) {
return v.length > 0;
});
// concat the result from array filter
filterSeResult = pick_result.reduce(function(a, b) {
return a.concat(b);
}, []);
console.log( filterSeResult );
// Result
/*
[
1,
2,
2,
1,
1
]
*/
关于javascript - 如何在javaScript中使用置换和组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53367934/