5274


Javascriptで2つの配列の要素を比較し、配列間で重複している要素だけを削除し結合したいと思っています。

比較する配列は以下のような形です。

[code]

    var a = new Array("あああ","いいい","ううう","えええ","おおお");
    var b = new Array("あああ","いいい","あああ","ううう","えええ","ううう");
    
[/code]

配列[a]がすべての要素がひとつずつ入った配列、配列[b]はその中の要素が増減した配列になり、  
最終的に、以下の値を取得したいと思っています。

[code]

    ("あああ","いいい","あああ","ううう","えええ","ううう","おおお");
    
[/code]

配列[a]と配列[b]を比較し、配列[a]にだけ存在する要素を配列[b]にpush、  
配列[b]の中で重複している要素については、削除せずにそのままにしたいのです。  
しかも、必ず配列[b]のほうが要素数が多いとも限りません。。。  
※（"あああ"）だけという場合もあります。

ごく簡単なscriptなのかもしれないのですが、思うような結果になかなか辿り着けません。  
お力をお貸しください。どうぞよろしくお願いいたします。


CC BY-SA 3.0
2015-01-25T21:07:52.460
5272
2015-01-26T02:49:27.960
2015-01-26T02:49:27.960
2944
7795
question
javascript jquery
2つの配列a,b間でaにのみ存在する要素をbに追加したい


Stackoverflow に次の Q and A があります。  
- Remove Duplicates from JavaScript Array <https://stackoverflow.com/questions/9229645/>

日本語なら こんな記事もあります。  
- 配列の重複をはじく、もしくは重複を取り出す <http://qiita.com/cocottejs/items/7afe6d5f27ee7c36c61f>


CC BY-SA 3.0
2015-01-25T21:17:19.280
5273
2015-01-25T21:17:19.280
2017-05-23T12:38:55.307
-1
2987
5272
answer


あんまり効率とか考えないで、jQueryタグがついてるのでjQueryも使って以下のように書けるんじゃないかと思います。

[code]

    a=jQuery.unique(a.concat(b));//aとbを結合して重複をなくしてaに書き戻す
    jQuery.each(a, function(i,v){ if(jQuery.inArray(v, b)==-1) b.push(v);});//aにあってbにないものをプッシュ
    
[/code]


CC BY-SA 3.0
2015-01-25T21:42:20.337
5274
2015-01-25T21:42:20.337
5044
5272
answer


jQueryが使えるのであれば $.inArray がありますので以下のように書けます。

[code]

    var a = new Array("あああ", "いいい", "ううう", "えええ", "おおお");
    var b = new Array("あああ", "いいい", "あああ", "ううう", "えええ", "ううう");
    for (var i = 0; i < a.length; i++) {
        // 配列aの要素 a[i] と配列bを比較し、配列bに存在しなかったら a[i] を配列bにpush
        if ($.inArray(a[i], b) < 0) {
            b.push(a[i]);
        }
    }
    // → ["あああ","いいい","あああ","ううう","えええ","ううう","おおお"];
    
[/code]


CC BY-SA 3.0
2015-01-26T00:11:51.800
5276
2015-01-26T00:11:51.800
3925
5272
answer