「javaScript-每三位插入一個逗號實現方式」

z_路遙知馬力發表於2019-04-17

 一道火了很久的面試題,

//將以下數字從小數點前開始每三位數加一個逗號

var num = 1234567890.12345;複製程式碼

相信大家寫了這麼久的前端程式碼,不論是培訓也好,面試也好,這種題出現的頻率挺高的,

網上方法很多,但是我要給大家介紹2中簡單易懂的方式

1.toLocalString()

let newNum = num.toLocalString(); 

/*    
    *  => 1,234,567,890.12345
    * 最快的作弊方式
*/

複製程式碼

下面來看下這個方法吧,MDN的解釋是


/*  
    *  toLocaleString() 返回一個字串表示陣列中的元素。
    *  陣列中的元素將使用各自的 toLocaleString 方法轉成字串,   
    *  這些字串將使用一個特定語言環境的字串(例如一個逗號 ",")隔開。

*/複製程式碼

簡直是作弊的無法無天!「javaScript-每三位插入一個逗號實現方式」

2.下面來看下本人的寫的low方法

function changeNum(num) {
	if(typeof num !== 'number') {
		throw new Error('請傳入陣列');
		return false;
        }

	// 切割小數點
        num = num + '';

	let index = 0,i = 0 ;

	for (;i < num.length ; i++) {
		if(num[i] === '.') {
			index = i;
		}
        }

	// 開始
	let start = num.slice(0,index) ;
	// 結束
	let end = num.slice(index,-1) ;

	let reson = [];

	//  console.log(start.length)

	let firstStart = '',j = start.length;
	// 判斷是否為三位數的倍數

	// 第一位
	let newStart = start.slice(0,j % 3)  ;
	console.log(newStart,start)
	start = start.replace(newStart,'');
	// Math.floor(j % 3) === j % 3 ?
	for(; j >= 0 ;j--){
		// console.log(j)
	        // 遍歷出符合的項
		if( j % 3 === 0  && j !== start.length) {
			console.log(j,'123')
			reson.push(j)
		}
	}

	// 儲存被切割的字串
	let sliceStr = [];
	// 反轉陣列
	reson = reson.reverse();
	// 遍歷符合項切割陣列
	for(let k = 0 ; k < reson.length ; k++) {
		console.log(reson[k],reson[k+1])
		sliceStr.push(start.slice(reson[k],reson[k+1]))
	}
	// 返回新的陣列
	let newNum  = '';

	if(newStart) {
		newNum = newStart + ',' + sliceStr.join(',') + end;
	}else {
		newNum = sliceStr.join(',') + end;
	}
			 
		return newNum
			
	}
	let str  = changeNum(num);複製程式碼

這個程式碼量的確有點可怕.... 來看下具體思路吧

/*
    1 => 首先將數字型別轉換成字串,用indexof來索引是否存在小數點
    
    2 => 切割start開始字串和end結束擁有小數點後的字串

    3 => 對start進行取模,將餘數用newStart儲存起來,並且在start字串中刪除
        
         對應擁有的。
    
    4 => 遍歷得到哪些項是符合的

    5 => 陣列反轉(多餘操作...其實j++就可以了...)對字串進行符合項切割

    6 => 判斷是否存在餘數 返回不同的值

*/複製程式碼

寫完,哇的一下就哭出來了... 「javaScript-每三位插入一個逗號實現方式」


以後還是要多深入瞭解一下js啊,知道的太淺了...


每天和大家一起進步一點點「javaScript-每三位插入一個逗號實現方式」



「javaScript-每三位插入一個逗號實現方式」


相關文章