如何在javaScript中使用置换和组合

时间:2018-11-19 03:28:24

标签: javascript

我有四种不同的过滤器,它们是选择框:过滤器A,过滤器B,过滤器C和过滤器D。 每次,当最终用户更新这些选择时,将返回四个数组。那些返回的结果是filterAResultArr,filterBResultArr,filterCResultArr和filterDResultArr。 如果用户没有从选择框中选择任何内容,则将返回一个空数组。

public interface MaxHeapInterface<T extends Comparable<? super T>>
{
    public void add(T entry);
    public T removeMax();
    public T getMax();
    public boolean isEmpty();
    public int getSize();
    public void clear();
    public void printHeap();
}

我要实现的目标如下:

  1. 如果返回一个非空数组

    如果(// //在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 }

  2. 如果仅返回两个非空数组

  3. 如果返回了三个非空数组

  4. 如果返回了四个非空数组

有什么方法可以使代码具有逻辑性,而不检查每个条件?检查所有条件看起来真是愚蠢。

1 个答案:

答案 0 :(得分: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
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
]

*/