先端js奇淫テクニック(二)


一.指定した範囲内の乱数を取得
この機能はテスト用のダミーデータを生成する際に特に有用である
var max = 100;
var min = 50;
var x = Math.floor(Math.random() * (max - min + 1)) + min;
console.log(x);

二.0から指定値までの数値配列を生成
var numbersArray = [];
var max = 100;
for( var i=1; numbersArray.push(i++) < max;); 
console.log(numbersArray); // [1,2,3 ... 100]

三.ランダムなアルファベット文字列の生成
function generateRandomAlphaNum(len) {
    var rdmString = "";
    for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
    return  rdmString.substr(0, len);
}
console.log(generateRandomAlphaNum(10));

四.数字の配列の順序を狂わせる
 var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
 numbers = numbers.sort(function(){ return Math.random() - 0.5});
 console.log(numbers);

五.配列内の最大値と最小値の取得
var  numbers = [5,0,120,-215,228,11233205,-75411]; 
var maxInNumbers = Math.max.apply(Math, numbers); // 
var minInNumbers = Math.min.apply(Math, numbers); // 
console.log(maxInNumbers);
console.log(minInNumbers);

六.指定した小数点以下の桁数を保持
var num =2.443242342;
num = num.toFixed(4);
console.log(num); //2.4432

七.浮動小数点計算の問題
console.log(0.1 + 0.2 === 0.3);     // false
console.log(9007199254740992 + 1);  // 9007199254740992
console.log(9007199254740992 + 2);  // 9007199254740994

八.lengthプロパティを使用して配列を空にする
var myArray = [12 , 222 , 1000 ];  
myArray.length = 0;
console.log(myArray); //[]

九.lengthプロパティを使用して配列を切断するには
var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ];  
myArray.length = 4;
console.log(myArray); //  [12 , 222 , 1000 , 124] 

十.配列からdeleteまたはremove要素を直接使用しないでください
配列要素にdeleteを直接使用すると、削除されずにundefinedに設定されます.配列要素の削除にはspliceを使用します.
var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852 ,, 'Doe' ,2154 , 119 ];
console.log(items.length);    // 11
console.log(delete items[3]); // true
console.log(items.length);    // 11

items.splice(3,1);
console.log(items.length);    // 10

十一.map()関数メソッドを使用したデータループ
var squares = [1,2,3,4].map(function (val) {
   return val * val;
});
console.log(squares);  // [1,4,9,16]

十二.配列にfor-inを使用しないでください
var sum = 0;  
for (var i = 0, len = arrayNumbers.length; i < len; i++) {  
    sum += arrayNumbers[i];  
}

iとlenの2つの変数はforループの最初の宣言で、両者は1回だけ初期化され、次のような書き方よりも速いです.for (var i = 0; i < arrayNumbers.length; i++)