剔除数组B中含有数组A的内容

原创
2018/03/05 22:33
阅读数 323

常规便捷写法:

var c = b.filter(item => !a.includes(item))

时间复杂度低的写法

var c = []
;(function (r) {
  var o = {}
  var j = a.length
  for (var i = 0, l = r.length; i < l; i++) {
    if (i < j) {
      o[r[i]] = 1
    } else {
      if (!o[r[i]]) {
        c.push(r[i])
      }
    }
  }
})(a.concat(b))

测试代码

function z() {
  var m = []
  var k = 0
  while (k < 10000) {
    m.push(parseInt(Math.random() * k, 10))
    k++
  }
  return m
}
var a = z()
var b = z()

console.time()
var c = b.filter(item => !a.includes(item))
console.timeEnd()
console.log(c)

console.time()
var c = []
;(function (r) {
  var o = {}
  var j = a.length
  for (var i = 0, l = r.length; i < l; i++) {
    if (i < j) {
      o[r[i]] = 1
    } else {
      if (!o[r[i]]) {
        c.push(r[i])
      }
    }
  }
})(a.concat(b))
console.timeEnd()
console.log(c)
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部