計算字串**現次數最多的字元及其次數
給定兩個陣列,找出第二個陣列沒有的數字
陣列的去重
利用math求最大值
9 * 9 乘法表
寫乙個千位分隔符新增函式,千位分隔符可以手動設定,預設文逗號
如何讓 nodelist 使用array中的map方法
不知道大小,設定,如果是長的就橫向排列,短的就縱向排列,怎麼實現?
演算法題:有乙個長度為n一1的陣列,包含1一n中不重複的亂序的數,求尋找範圍內不在陣列中的數,考慮空間占用,效能優化,溢位等情況,至少寫兩個演算法
編寫乙個方法去掉乙個陣列的重複元素
function
getdata()
})return
"星期"
+ res;
} console.
log(
getdata()
);
let arr =[1
,4,88
,22,444,2
,9]for
(let i =
0; i < arr.length -
1; i++)}
} console.
log(
"arr"
, arr)
;// [1, 2, 4, 9, 22, 88, 444]
var example =[8
,94,15
,88,55
,76,21
,39];
function
selectsort
(arr)
} temp = arr[i]
; arr[i]
= arr[minindex]
; arr[minindex]
= temp;
} console.
timeend
('選擇排序耗時');
return arr;
} console.
log(
selectsort
(example)
);
03:遍歷物件,得到字元出現的次數!
// 計算字串**現次數最多的字元及其次數
let str =
"aafskjhafaxaf"
;let obj =
//用於儲存這個出現的字元 出現的話 就是裡面的屬性+1 否則的話 就新增該屬性
// 字串中的某個字元是否存在 物件之中! 存在就+1 不存在就新增該字元屬性!
let arr = str.
split(""
) arr.
reduce
(function
(pre, cur)
else})
for(
var k in obj)
// 給定兩個陣列,找出第二個陣列沒有的數字
let arr1 =[1
,3,4
,6,0
]let arr2 =[0
,3,5
,1]//也就是拿陣列2 去陣列1之中查詢是否存在這個數字 過濾
let newarr = arr1.
filter
(item => arr2.
indexof
(item)
===-1)
console.
log(newarr)
;//[4,6]
//陣列的去重
let arr =[1
,2,34
,55,22
,2,1
,3,22
,66,2
]let
set=
newset
(arr)
console.
log(
[...
set]);
//[1, 2, 34, 55, 22, 3, 66]
//方法2
let newarr =
for(
let i =
0; i < arr.length; i++)}
console.
log(newarr)
;//[1, 2, 34, 55, 22, 3, 66]
//最大值
let arr =[1
,2,3
,2,7
,999,2
];let max = math.max.
(null
, arr)
; console.
log(max)
;//999
let start =
""for
(let i =
1; i <
10; i++
) * $ = $`);
start +=`$
* $= $
` +"\t";}
start +=
"\n"
} console.
log(start)
;
let str =
2589.65
function
joinq
(str, operate)
)+(?!\d))/g
, operate)
res = res +
"."+ arr[1]
;return res
}console.
log(
joinq
(str,
"-"));
console.
log(
joinq
(str,
",")
);
>
>
我是li
>
>
我是li
>
>
我是li
>
ul>
>
let lis = document.
queryselectorall
("ul li"
)// console.log(lis); //nodelist(3)
//方法1 把這個節點集合 轉化為陣列
let res = array.
from
(lis)
res.
map(item => console.
log(item)
)//方法2:
let newarr =
for(
let i =
0; i < lis.length; i++
) newarr.
map(item => console.
log(item)
)script
>
方式2:
當n不太大時,可以考慮求和。先算出1~n的所有數的和,然後減去陣列**現的所有自然數的和。時間複雜度為o(n),空間複雜度o(1)。這種方法的缺點是n不能太大,n比較大時,求和容易溢位。
用位圖。從頭到尾的掃瞄整個陣列,把出現的數相應的位設定為1.然後再掃瞄位圖,找出不為1的那一位,即為要找的數。這種方法的時間複雜度為o(n),空間複雜度為o(n)。
異或有個很巧妙的地方:同一變數和該變數與另一變數的異或值的異或等於這個變數自身。所以我們可以把1~n的所有數異或,再把陣列**現的所有數異或,然後再把這兩個異或的結果異或,最後得到的值即為我們要找的值。這樣時間複雜度為o(n),空間複雜度為o(1)。在空間上比第二種方法要好,而且不會出現第一種方法中所說的溢位問題。
最簡單的去重方法, 實現思路:新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中;注意點:判斷值是否在陣列的方法「indexof」是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器**,原始碼如下:
// 最簡單陣列去重法
function
unique1
(array)
return n;
}// 判斷瀏覽器是否支援indexof ,indexof 為ecmascript5新方法 ie8以下(包括ie8, ie8只支援部分ecma5)不支援if(
!array.prototype.indexof)
for(
var i =
0, len =
this
.length; i < len; i++)}
return result;
}}
// 速度最快, 佔空間最多(空間換時間)
function
unique2
(array)
, r =
, len = array.length, val, type;
for(
var i =
0; i < array.length; i++
)else
if(n[val]
.indexof
(type)
<0)
}return r;
}
JS面試常見演算法題
學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問題吧。1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for va...
JS面試常見演算法題
1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for var i 0 i str.length i else console.log n var max 0 var maxchar null for var key in n var mores...
面試之css和js
function.prototype.mycall function context 當傳入的context為基礎型別時,直接掛載fn會報錯,因為基礎型別沒有屬性這一說 if typeof context object context new object context context conte...