JS開発における実用技術


1、指定範囲内の乱数を取得する
/*
     min~max       
*/
function getRandomNum(min,max){
    return Math.floor(Math.random()*(max-min+1))+min;
}
2、ランダム取得配列の要素
/*
                 
*/
function getRandomFromArr(arr){
    return arr[Math.floor(Math.random()*arr.length)];
}
3、配列を乱す順番
/*
           
*/
function getRandomArr(arr){
    // var resArr = [...arr]; // ES6  

    var resArr = Array.from(arr);
    return resArr.sort(function(){
        return Math.random() - 0.5;
    });
}
4、オブジェクトを行列に変換する(前提条件:オブジェクトは属性lengthを含む必要があります)
/*
          (  obj          obj.hasOwnProperty('length') true)
*/
function getObjToggleArr1(obj){
    return Array.prototype.slice.call(obj); //    
}
function getObjToggleArr2(obj){
    return [].slice.call(obj); //    
}
function getObjToggleArr3(obj){
    return Array.prototype.apply.call(obj); //    
}


/*
          (  obj         )     
*/
function getObjToggleArr(obj){
    var copyObj = Object.assign({},obj); //       obj(   )
    if(!copyObj.hasOwnProperty('length')){
        copyObj['length']=Object.keys(obj).length;
    }
    return [].slice.call(copyObj); 
}
5、配列の最大値と最小値を取得する
/*
                 
*/
function maxAndMin(arr){
    return {
       max:Math.max.apply(null,arr.join(',').split(',')),
       min:Math.min.apply(null,arr.join(',').split(','))
    }
}
6、指定された長さの乱数文字列を生成する
function getRandomStr(len) {
    for (var str = ''; str.length < len; str += Math.random().toString(36).substr(2));
    return str.substr(0, len)
}
7、配列の中で最も多く出現する要素を探して、その出現した位置を与えます.
function getMaxAndIndex(arr) {
    var obj = {};
    arr.forEach(function(item, index) {
        if (!obj[item]) {
            obj[item] = {
                indexs: [index]
            }
        } else {
            obj[item]['indexs'].push(index);
        }
    });
    var num = 0; //         
    var str = ''; //           
    var reArr; //          
    for (var attr in obj) {
        var temp = obj[attr]['indexs'];
        if (temp.length > num) {
            num = temp.length;
            str = attr;
            reArr = temp;
        }
    }
    return {
        maxStr: str,
        indexs: reArr
    }
}