http://monopocket.jp/blog/javascript/2137/
JavaScript でオブジェクトや配列をコピーする方法
オブジェクトのコピー – JavaScript
1 | var object1 = {a: true , b: false }; |
2 | var object2 = $.extend( true , {}, object1); |
3 | // object2 を変更する |
4 | object2.c = true ; |
5 | console.log(object1); // 出力: {a: true, b: false} (中身は変更されない) |
6 | console.log(object2); // 出力: {a: true, b: false, c: true} |
配列のコピー – JavaScript
1 | var array1 = [1 , 2, 3]; |
2 | var array2 = $.extend( true , [], array1); |
3 | // array2 を変更する |
4 | array2.push(4); |
5 | console.log(array1); // 出力: [1, 2, 3] (中身は変更されない) |
6 | console.log(array2); // 出力: [1, 2, 3, 4] |
【訂正】下記方法には重複している要素が削除されないなどの問題があります。詳しくはコメント欄を参照してください。
http://qiita.com/_shimizu/items/b8eac14f399e20599818
配列の中から特定の要素を削除したいときはsomeメソッドを使うと便利。
TIPS:null埋め、delete、spliceで削除の違い
【JavaScript】配列から空文字の要素を削除する
https://www.softel.co.jp/blogs/tech/archives/3924
問題
以下の配列から、空文字の要素を削除してください。
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]
答え
素直に1つずつ内容を見て、新しい配列に移していく
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]; var x = []; for (var i = 0; i < a.length; ++i) { if (a[i] !== "") x.push(a[i]); } //alert(x); // -> 123,abc,xyz,987,hoge,fuga
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]; var b, x = []; while ((b = a.shift()) !== undefined) { if (b !== "") x.push(b); } //alert(x); // -> 123,abc,xyz,987,hoge,fuga
IEだとIE9以降でないとだめだけど、Array.filterを使うと
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]; var x = a.filter(function(e){return e !== "";}); //alert(x); // -> 123,abc,xyz,987,hoge,fuga
jQueryがあれば!
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga"]; var x = $.grep(a, function(e){return e !== "";}); //alert(x); // -> 123,abc,xyz,987,hoge,fuga
数字の0やundefinedやfalseなども除去してよければ、
var a = ["", "123", "abc", "xyz", "", "987", "hoge", "", "fuga", 0, undefined, false]; var x = $.grep(a, function(e){return e;}); //alert(x); // -> 123,abc,xyz,987,hoge,fuga