JavaScript 上两个 Javascript 的问题。看看大家是如何解决掉的

jarorwar · 2014年04月03日 · 最后由 kai1248 回复于 2014年04月07日 · 2743 次阅读

首先,这样的问题在 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();
};

#5 楼 @zackteng 注释写得让人很舒服啊

使用 underscore~~ 差集:_.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;
}
需要 登录 后方可回复, 如果你还没有账号请 注册新账号