看到一个去重的问题:

// Given a list lst and a number N, create a new list that contains each number of lst at most N times without reordering. For example if N = 2, and the input is [1,2,3,1,2,1,2,3], you take [1,2,3,1,2], drop the next [1,2] since this would lead to 1 and 2 being in the result 3 times, and then take 3, which leads to [1,2,3,1,2,3].

deleteNth ([1,1,1,1],2) // return [1,1]

deleteNth ([20,37,20,21],1) // return [20,37,21]

然后自己写的:

function deleteNth(arr,x) {
  var pairs = {};
  return arr.filter(function(n) {
    if(pairs.hasOwnProperty(n)){
        return ++pairs[n] < x? true:false;
    }else {
        pairs[n] = 1;
        return true;
    }
  });
}

别人写的:

function deleteNth(arr,x) {
  var cache = {};
  return arr.filter(function(n) {
    cache[n] = (cache[n]||0) + 1; // ~~cache[n] + 1
    return cache[n] <= x;
  });
}

自己写成了一堆屎,好好学习。

相关文章:

  • 2022-12-23
  • 2021-06-15
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
  • 2021-05-21
  • 2021-04-18
猜你喜欢
  • 2021-09-11
  • 2021-09-25
  • 2022-12-23
  • 2021-08-24
  • 2021-11-30
  • 2021-11-20
  • 2021-07-22
相关资源
相似解决方案