function obj_array_shuffle(list) {
for (var i = list.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
if (i == j) continue;
var k = list[i];
list[i] = list[j];
list[j] = k;
}
return list;
}
JavaScriptで普通に配列をコピーすると配列を参照渡しでコピーされます。 つまり、コピーした配列に何らかの操作をするとコピー前の配列も影響を受けます。 そこで、JavaScriptで配列を参照渡しではなく実際にコピーしたい時は次のようにするといいでしょう。
引用元 : https://byuzensen.com/javascript-object-pass-by-value
var new_array = old_array.concat();
オブジェクトの場合は次のようにすると良いようです
var new_obj = JSON.parse(JSON.stringify(old_obj));
一般的に文字列でソートすると大文字と小文字は区別されてしまいます。
そこで大文字の(A)も小文字の(a)も同じ(a)としてソートする方法がこちら
var text_array = ['AAA','aaa','bb','BBB','zzzz'] // ソート(大文字と小文字を区別しない) text_ary = text_ary.sort(function (a, b) { a = a.toString().toLowerCase(); b = b.toString().toLowerCase(); return (a > b) ? 1 : (b > a) ? -1 : 0; }); alert(text_array);
引用元 : https://gist.github.com/ishiduca/1215718
JavaScriptにはin_arrayのようにある数値や文字列が配列の中に存在するかどうかを判別する関数がありません。
そこで以下のようにして作成します。
Array.prototype.in_array = function(val) { for(var i = 0, l = this.length; i < l; i++) { if(this[i] == val) { return true; } } return false; }
これで、配列のメソッドとして in_array が使用できるようになります。
var my_array = new Array('hogehoge','fugafuga'); if ( my_array.in_array('hogehoge') ){ alert('存在します'); }
JavaScriptである変数(hogehoge)が配列かどうかを確認したい時があります。その時は
if ( hogehoge instanceof Array) { alert('配列') } else{ alert('スカラー') }
とします
配列 array をランダムに並び替える。
for (i=0 ; i<array.length; i++){ var tmpA, tmpB, rnd; rnd=Math.floor(Math.random() * array.length); tmpA=array[i]; tmpB=array[rnd]; array[i]=tmpB; array[rnd]=tmpA; }
例:
<script language="javascript"> array=new Array( 'カリーニ' , 'ロドリゲス' , 'レコバ' , 'フォルラン' , 'エストジャノフ' ); document.write(array+"¥n"); for (i=0 ; i<array.length; i++){ var tmpA, tmpB, rnd; rnd=Math.floor(Math.random() * array.length); tmpA=array[i]; tmpB=array[rnd]; array[i]=tmpB; array[rnd]=tmpA; } document.write(array+"¥n"); </script>