面试笔试题数组合并并去重

122 阅读1分钟
  • 有二个数组nums1和nums2
  • 变量m 表示nums1数组中大于m的元素
  • 变量n 表示nums2数组中小于n的元素 要求:把nums2中大于m的元素和nums2中小于n的元素 合并,使合并后的数组按递减顺序排序 排列并去重,并输入指定的结果。
 let nums1 = [      {value  :2},      {value  :8},      {value  :5},      {value  :10},      {value  :-1},      {value  :9},    ]
    m= 1,
    nums2 = [{value:2},{value:5},{value:6},{value:30}]
    n = 15
    function concatArr (arr,m,arr2,m){
    //在这写代码
    }
       concatArr (nums1,m,nums2,n)
    //输出结果是这样的:
      {value  :10},
      {value  :9},
      {value  :8},
      {value  :6},
      {value  :5},
      {value  :2},

解答 代码如下:

   function concatArr (arr,m,arr2,m){
      // 根据条件合并数组
     let num = nums1.filter(item => item.value > 1).concat(nums2.filter(item => item.value > 1 && item.value< 15))
    //  console.log(num);
    // 循环
     for(let i = 0;i<num.length-1;i++) {
       for (let j =i+1;j<num.length;j++) {
         if(num[i].value === num[j].value) {
           num.splice(j,1)
           j--
         }
       }
     }
    //  排序
     num1 = num.sort(function(a,b){return b.value-a.value})
     console.log(num1);
  }
   concatArr (nums1,m,nums2,n)