文章目錄
- 1.如何將浮點數點左邊的數每三位添加一個逗號,如12000000.11轉化爲『12,000,000.11』?
- 2.如何實現一個數組的隨機排序?
- 3.產生四位隨機驗證碼
- 4.給你一個字符串String=“adadfdfseffqdjhuserfefsefseetsdg”,要求找出裏邊的字符串qdjhu
- 5.自定義函數實現字符串反轉
- 6.判斷字符串是不是迴文字符串
- 7.javaScript中如何檢測一個數據是不是String類型?
- 8.我們可以用2\*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2\*1的小矩形無重疊地覆蓋一個2\*n的大矩形,總共有多少種方法?
- 9.編寫請給 Array 本地對象增加一個原型方法,它用於刪除數字數組中重複的數字(可能有多個),返回值是一個包含被刪除的重複條目的新數組.
- 10.找出對象不在原型鏈上的屬性
- 11.給定字符串 str,檢查其是否包含數字,包含返回 true,否則返回 false
- 12.求 a 和 b 相乘的值,a 和 b 可能是小數,需要注意結果的精度問題?
- 13 .移除數組 arr 中的所有值與 item 相等的元素。不要直接修改數組 arr,結果返回新的數組
- 14. 完成函數 createModule,調用之後滿足如下要求:
- 15.將給定數字轉換成二進制字符串。如果字符串長度不足 8 位,則在前面補 0 到滿8位。
1.如何將浮點數點左邊的數每三位添加一個逗號,如12000000.11轉化爲『12,000,000.11』?
function commafy(num){
return num && num
.toString()
.replace(/(\d)(?=(\d{3})+\.)/g, function($1, $2){
return $2 + ',';
});
}
2.如何實現一個數組的隨機排序?
//方案一:
function sortRandom1(arr) {
let length = arr.length;
for(let i = 0 ; i < length ; i++) {
let rand = parseInt(Math.random()*length);
let temp = arr[rand];
arr[rand] = arr[i];
arr[i] = temp;
console.log(rand)
}
console.log(arr);
}
sortRandom1(arr);
//方案二:
arr.sort(() => {
return Math.random() - 0.5;
})
console.log(arr);
//方案三
function sortRandom2(arr) {
let midArray = [];
while (arr.length > 0 ) {
let randIndex = parseInt(Math.random() * arr.length);
midArray.push(arr[randIndex]);
arr.splice(randIndex,1);
}
}
sortRandom2(arr);
3.產生四位隨機驗證碼
function require() {
let str = '0123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM'
let length = str.length;
let requireStr = '';
for(let i = 0 ; i < 4 ; i++) {
requireStr += str[parseInt(Math.random() * length)];
}
return requireStr;
}
console.log(require())
function require() {
let str = '0123456789qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM'
let length = str.length;
let requireStr = '';
for(let i = 0 ; i < 4 ; i++) {
let random = parseInt(Math.random() * length);
if(requireStr.indexOf(str[random]) !== -1) {
continue;
}
requireStr += str[random];
}
return requireStr;
}
console.log(require())
4.給你一個字符串String=“adadfdfseffqdjhuserfefsefseetsdg”,要求找出裏邊的字符串qdjhu
let str = "adadfdfseffqdjhuserfefsefseetsdg";
let aimStr = "qdjhu";
let start = str.indexOf(aimStr);
console.log(start)
let end = start + aimStr.length;
console.log(end)
let result = str.substr(start,aimStr.length)
// let result = str.substring(start,end);
console.log(result)
5.自定義函數實現字符串反轉
思路:利用split()方法轉化爲數組,利用數組的reverse()方法反轉數組,再利用join()方法轉爲字符串即可.
let str = "abcdef";
function reverse(str) {
let arr = str.split('')
let revArr = arr.reverse();
let result = revArr.join('');
return result;
}
console.log(reverse(str));
6.判斷字符串是不是迴文字符串
function huiwen(str) {
//先將字符串轉化爲數組
let arr = str.split('')
//利用數組反轉
let revArr = arr.reverse();
//翻轉後的數組轉化爲字符串
let result = revArr.join('');
if(result === str) {
console.log(str + '是迴文字符串');
}else{
console.log(str + '不是迴文字符串');
}
}
7.javaScript中如何檢測一個數據是不是String類型?
function isString(str) {
if(typeof str == 'String' || str.constructor == String) {
return true;
}else{
return false;
}
}
8.我們可以用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
類似於斐波拉契數列
function fun(n) {
if(n === 1) {
return 1;
}
if(n === 2) {
return 2;
}
return fun(n-1) +fun(n-2)
}
9.編寫請給 Array 本地對象增加一個原型方法,它用於刪除數字數組中重複的數字(可能有多個),返回值是一個包含被刪除的重複條目的新數組.
Array.prototype.distinct = function(){
let result = new Array;
for(var i = 0 ; i < this.length ; i++) {
for(var j = i+1; j < this.length;j++) {
if(this[i] == this[j]) {
result.push(this.splice(j,1));
j--;
}
}
}
return result;
}
10.找出對象不在原型鏈上的屬性
var C = function () { this.foo = 'bar'; this.baz = 'bim'; };
C.prototype.bop = 'bip';
let obj = new C();
function iterate(obj) {
let arr = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(`${key}:${obj[key]}`)
}
}
return arr;
}
console.log(iterate(obj));
11.給定字符串 str,檢查其是否包含數字,包含返回 true,否則返回 false
let str = 'qwqabd';
function fun(str) {
let length = str.length;
for(let i =0 ; i < length ; i++) {
if(Number(str[i])) {
return true;
}
}
return false;
}
console.log(fun(str));
12.求 a 和 b 相乘的值,a 和 b 可能是小數,需要注意結果的精度問題?
輸入:3, 0.0001
輸出:0.0003
//最後計算的精度是兩數精度之和
function multiply(a, b) {
if (Math.floor(a) == a && Math.floor(b) == b) {
return a * b
} else {
let stra = a.toString();
let strb = b.toString();
let len1 =stra.split('.').length > 1 ? stra.toString().split(".")[1].length:0;
let len2 =strb.split('.').length > 1 ? strb.toString().split(".")[1].length:0;
return (a*b).toFixed(len1+len2)
}
}
13 .移除數組 arr 中的所有值與 item 相等的元素。不要直接修改數組 arr,結果返回新的數組
//輸入 [1, 2, 3, 4, 2], 2
//輸出 [1, 3, 4]
let arr = [1, 2, 3, 4, 2];
function remove(arr, item) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== item) {
newArr.push(arr[i])
}
}
return newArr;
}
console.log(remove(arr, 2));
14. 完成函數 createModule,調用之後滿足如下要求:
- 返回一個對象
- 對象的 greeting 屬性值等於 str1, name 屬性值等於 str2
- 對象存在一個 sayIt 方法,該方法返回的字符串爲 greeting屬性值 + ', ’ + name屬性值
//構造函數方式
function createModule(str1, str2) {
function obj() {
this.greeting = str1;
this.name = str2;
this.sayIt = function () {
return (`${this.greeting}+${this.name}`)
}
}
return new obj();
}
//工廠模式
function createModule(str1, str2) {
function createObj() {
let obj = new Object;
obj.greeting = str1;
obj.name = str2;
obj.sayIt = function () {
return (`${obj.greeting}+${obj.name}`)
}
return obj;
}
return createObj();
}
//組合模式
function createModule(str1, str2) {
function obj() {
this.greeting = str1;
this.name = str2;
}
obj.prototype.sayIt = function() {
return (`${this.greeting},${this.name}`)
}
return new obj();
}
15.將給定數字轉換成二進制字符串。如果字符串長度不足 8 位,則在前面補 0 到滿8位。
在多數情況下,調用toString()方法不必傳遞參數.但是,在調用數值的 toString()
方法,可以傳遞一個參數,輸出數值的基數.默認情況下, toSting()
方法以十進制格式返回數值的字符串表示.二通過傳遞基數,toString()
可以輸出二進制,八進制,十六進制,乃至其他任意有效進制格式表示的字符串
var num = 10;
alert(num.toString()); //"10"
alert(num.toString(2)); //"1010"
alert(num.toString(8)); //"12"
alert(num.toString(10)); //"10"
alert(num.toString(16)); //"a"
function convertToBinary(num) {
let str = parseInt(num).toString(2);
let arr = str.split('');
while(arr.length < 8) {
arr.unshift(0);
}
return arr.join('')
// console.log(arr.join(''));
}