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

jarorwar · April 03, 2014 · Last by kai1248 replied at April 07, 2014 · 2743 hits

首先,这样的问题在 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;
}
You need to Sign in before reply, if you don't have an account, please Sign up first.