http://monopocket.jp/blog/javascript/2137/
JavaScript でオブジェクトや配列をコピーする方法
オブジェクトのコピー – JavaScript
1 |
var object1
= {a: true ,
b: false }; |
2 |
var object2
= $.extend( true ,
{}, object1); |
配列のコピー – JavaScript
1 |
var array1
= [1 , 2, 3]; |
2 |
var array2
= $.extend( true ,
[], array1); |
【訂正】下記方法には重複している要素が削除されないなどの問題があります。詳しくはコメント欄を參照してください。
http://qiita.com/_shimizu/items/b8eac14f399e20599818
配列の中から特定の要素を削除したいときはsomeメソッドを使うと便利。
var array1 = [10, 20, 30, 40, 50];
var target = 30;
//要素を削除する
array1.some(function(v, i){
if (v==target) array1.splice(i,1);
});
console.log(array1) //=> [10, 20, 40, 50];
/*
* 連想配列から特定の要素を排除したいときにも便利
*/
var array2 = [
{id:1, name:"hoge"},
{id:2, name:"test"},
{id:3, name:"hello"},
{id:4, name:"world"},
{id:5, name:"hoge"},
{id:6, name:"test"},
{id:7, name:"hello"}
];
var targetId = 3;
array2.some(function(v, i){
if (v.id==targetId) array2.splice(i,1); //id:3の要素を削除
});
var targetName = 'hello';
array2.some(function(v, i){
if (v.name==targetName) array2.splice(i,1); //name:helloの要素を全て削除
});
TIPS:null埋め、delete、spliceで削除の違い
if (v==target) array1[i] = null;
//null値が入る。for~inに引っかかる。lengthは変わらない。
if (v==target) delete array1[i];
//undefinedが入る。for~inに引っかからない。lengthは変わらない。
if (v==target) array1.splice(i,1);
//完全に削除。for~inに引っかからない。length減る。
【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