首先,这样的问题在 ruby 里面试在是太 easy 了!放在 js 里,不知道自己对库不熟悉还是怎么着,反正没找到好的办法。
问题如下: var a = [1,3,4,5,6,7,8,9] var b = [3,5,6]
var for_del = 5
现在请看题目: 1、求 a 和 b 的差集和交集,以及并集。 2、判断 a 和 b 集合中是否包含 for_del,如果包含请删除 for_del 这个元素。
请祭出您的神奇!只限 javascript!别的语言就不要来了
如果想快速实现,一般就用下 underscore
或者要具体研究的话,看它是怎么写的就行了。
#1 楼 @shiny 上代码啊。作为一个 code 哥。让代码为自己代言~!
#2 楼 @jarorwar 我干活去了……楼下上!
第一题集合的概念记不清了
var position = a.indexOf(for_del); if ( ~position ) a.splice(position, 1);
1.网上找的。。。
* @param {Array} a 集合A * @param {Array} b 集合B * @returns {Array} 两个集合的差集 */ Array.minus = function(a, b){ return a.uniquelize().each(function(o){return b.contains(o) ? null : o}); };
* @param {Array} a 集合A * @param {Array} b 集合B * @returns {Array} 两个集合的交集 */ Array.intersect = function(a, b){ return a.uniquelize().each(function(o){return b.contains(o) ? o : null}); };
* @param {Array} a 集合A * @param {Array} b 集合B * @returns {Array} 两个集合的并集 */ Array.union = function(a, b){ return a.concat(b).uniquelize(); };
我是雷锋 http://underscorejs.org/#union
#5 楼 @zackteng 注释写得让人很舒服啊
使用 underscore~~ 差集:_.union(_.difference(a, b), _.difference(b, a)) 交集:_.intersection(a, b) 并集:_.union(a, b) 删:
_.union(_.difference(a, b), _.difference(b, a))
_.intersection(a, b)
_.union(a, b)
deleteValue = function(array, value){ if (_.contains(array, value)) { array = _.without(array, value); } return array; }