找出重複最多的字符
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方法會被調用
常用的跨域技術主要有如下幾種:
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等資源,最後進行頁面渲染,呈現給用戶