js面試題總結(未完待續。。。)

找出重複最多的字符

let str = 'asss23sjdssskssa7lsssdkjsssdss';
			const arr = str.split("") // 把字符串轉換爲數組
			const str2 = arr.sort().join("") // 首先進行排序,這樣結果會把相同的字符放在一起,然後再轉換爲字符串
			let value = "";
			let index = 0;
			// console.log(str2)
			str2.replace(/(\w)\1*/g,function($0,$1){
				// console.log($0,$1)
				if (index < $0.length) {
					index = $0.length;   // index是出現次數
					value = $1;			 // value是對應字符
				}
			})
			console.log(str)
			console.log(`最多的字符: ${value},重複的次數:${index}`)

js數組去重的幾個方法

1. ES6數組去重
拓展運算符(...)內部使用for...of循環,
Set數據結構,它類似於數組,其成員的值都是唯一的.
var arr = [3,5,6,5,4,6,9];
console.log(...new Set(arr));
//輸出結果:[3,5,6,4,9]

2.利用Array.from將Set結構轉換成數組,還能將僞數組轉化爲數組
var arr = [2,5,6,5,4,6,9];
console.log(Array.from(new Set(arr)));
//輸出結果:[2, 5, 6, 4, 9]
3. 利用 arr.indexOf(a) 的方法解決數組去重,判斷 a 值是否在arr中存在,
  如果存在就返回所在的下標,如果不存在就返回 -1

var arr = [2,3,4,5,2,5,6]
  function noRepeat (arr) {
      var newArr = []
      for(var i in arr){
        if(newArr.indexOf(arr[i]) == -1){
          newArr.push(arr[i])
        }
     }
     return newArr;
  }
console.log(noRepeat(arr));
//輸出結果:[2, 3, 4, 5, 6]
4..使用 filter
	unique_array = arr.filter(function(elem, index, self) {
     return index == self.indexOf(elem);
    })
5.對象數組去重
var arr = [{id: 1,value: 'aa'}, {id: 2,value: 'bb'}, {id: 3,value: 'cc'}, {id: 4,value: 'dd'}, {id: 1,value: 'ee'}];
		var result = [];
		var obj = {};
		arr.map(item => {
			if (!obj[item.id]) {
				result.push(item);
				obj[item.id] = true;
			}
		})
console.log(result);

把手機號的中間4位換成*

//方法一、利用數組splice,split,join方法
var tel = 18810399133;
tel = "" + tel;
var ary = tel.split("");
ary.splice(3,4,"****");
var tel1=ary.join("");
console.log(tel1);
//方法二、利用字符串的substr方法
var tel = 18810399133;
tel = "" + tel;
var tel1 = tel.substr(0,3) + "****" + tel.substr(7)
console.log(tel1);
//方法三、利用字符串substring方法
var tel = 18810399133;
tel = "" + tel;
var tel1 =tel.replace(tel.substring(3,7), "****")
console.log(tel1);
//方法四、利用正則
var tel = 18810399133;
tel = "" + tel;
var reg=/(\d{3})\d{4}(\d{4})/;
var tel1 = tel.replace(reg, "$1****$2")
console.log(tel1);

解釋一下什麼是 promise ?

promise是js中的一個對象,用於生成可能在將來產生結果的值。值可以是已解析的值,也可以是說明爲什麼未解析該值的原因。
promise 可以有三種狀態:

  • pending:初始狀態,既不是成功也不是失敗
  • fulfilled:意味着操作完全成功
  • rejected:意味着操作失敗

一個等待狀態的promise對象能夠成功後返回一個值,也能失敗後帶回一個錯誤
當這兩種情況發生的時候,處理函數會排隊執行通過then方法會被調用

常用的跨域技術主要有如下幾種:

https://juejin.im/post/5dc301a76fb9a04a7b29cdc3

JSONP跨域
iframe+domain跨域
nginx反向代理跨域
cors跨域
postMessage跨域

實現一個函數sort重排數組, 把數組中奇數放左邊 , 偶數放右邊

function sort(arr){  // 定義一個方法 , 接受一個數組爲參數
  let sortArr = []  // 定義一個空數組
  for(let i=0;i<arr.length;i++){
    if(arr[i]%2===0){  // 如果爲偶數 
      sortArr.push(arr[i]) // 尾部插入
    }else if(arr[i]%2===1){ // 如果爲奇數
      sortArr.unshift(arr[i]) // 頭部插入
    }
  }
  return sortArr // 返回定義的數組
}

從輸入URL到頁面加載完成期間經歷了什麼?

1、DNS域名解析
2、發起TCP連接(三次握手)
3、發送HTTP請求,接受HTTP響應
4、斷開TCP連接(四次揮手)
5、瀏覽器解析HTML代碼,請求js,css等資源,最後進行頁面渲染,呈現給用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章