JavaScriptプログラムに関する各種メモ書き:タグ「配列」での検索

JavaScriptでオブジェクトの配列をランダムにシャッフルする

● オブジェクトの配列をランダムにシャッフルする

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;
}
No.1255
06/20 11:15

edit

配列

JavaScriptで配列を参照渡しではなく実際にコピーする

JavaScriptで普通に配列をコピーすると配列を参照渡しでコピーされます。 つまり、コピーした配列に何らかの操作をするとコピー前の配列も影響を受けます。 そこで、JavaScriptで配列を参照渡しではなく実際にコピーしたい時は次のようにするといいでしょう。

引用元 : https://byuzensen.com/javascript-object-pass-by-value

● JavaScriptで配列を参照渡しではなく実際にコピーする

var new_array = old_array.concat();

オブジェクトの場合は次のようにすると良いようです

● JavaScriptでオブジェクト(連想配列)を参照渡しではなく実際にコピーする

var new_obj = JSON.parse(JSON.stringify(old_obj));
No.1254
06/20 11:09

edit

配列

JavaScriptでアルファベットの大文字と小文字を区別せずソートする。

一般的に文字列でソートすると大文字と小文字は区別されてしまいます。

そこで大文字の(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

No.921
02/12 10:18

edit

配列

JavaScriptでPHPのin_arrayのような関数を作る

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('存在します'); }
No.900
10/25 18:14

edit

配列

配列かどうかを判別する

JavaScriptである変数(hogehoge)が配列かどうかを確認したい時があります。その時は

if ( hogehoge instanceof Array) {
	alert('配列')
}
else{
	alert('スカラー')
}

とします

No.852
05/30 10:09

edit

配列

配列をランダムに並び替える

配列 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>
No.395
04/12 18:02

edit

配列