1、判斷一個字串中出現次數最多的字元,統計這個次數
var str = "ababccddabbb"; var obj = {}; for (var i = 0; i < str.length; i++) { var key = str.charAt(i); if (!!obj[key]) { obj[key]++; } else { obj[key] = 1; } } console.log(obj); var max = -1, max_key = "", key; for (key in obj) { if (max < obj[key]) { max = obj[key]; max_key = key; } } console.log(max_key + ":" + max);
2、截取字串abcdefg的efg
var str = "abcdefg";var subStr="";if (/efg/.test(str)) { subStr=str.substr(str.indexOf("efg"),3);}console.log(subStr);
3、求一個字串的位元組長度(一個英文字元佔用一個位元組,一個中文字元佔用兩個位元組)
function getBytes(str) { var len = str.length; var bytes = len; for (var i = 0; i < len; i++) { if (str.charCodeAt(i) > 255) { bytes++; } } return bytes;}console.log(getBytes("您好,hello"));
4、assert判斷類型
var assert = { isBoolean: function (G) { return (typeof G === "boolean"); }, isNumber: function (G) { return (typeof G === "number" && isFinite(G)); }, isString: function (G) { return (typeof G === "string" || G.constructor==String); }, isFunction: function (G) { var A = {}; return (A.toString.apply(G) === A.toString.apply(Function)); }, isObject: function (G) { return (G && (typeof G === "object" || this.isFunction(G)) || false); }};
5、深度複製對象
基本類型(包括undefined,Null,boolean,String,Number),按值傳遞;參考型別(包括數組,對象),按址傳遞,參考型別在值傳遞的時候是記憶體中的地址。例如:var a = { "id": 1 };var b = a;b["name"] = 2;console.log(a); //{id: 1, name: 2}如果你修改b的值,那麼a變數的值也發生了變化。複製分為2種:A、淺度複製:基本類型為值傳遞,對象仍為引用傳遞。B、深度複製:所有元素或屬性均完全複製,並於原參考型別完全獨立,即,在後面修改對象的屬性的時候,原對象不會被修改。深度複製對象代碼:function cloneObject(obj) { var o = obj.constructor === Array ? [] : {}; for (var i in obj) { if (obj.hasOwnProperty(i)) { o[i] = typeof obj[i] === "Object" ? cloneObject(obj[i]) : obj[i]; } } return o;}如果是一個簡單的數組,元素中沒有參考型別的值,可以直接用array.concat();或者array.slice(0);來深度拷貝一個數組,這樣簡單又高效。數組的concat()和slice()本來就會產生一個新的數組,原來的數組不會受影響。
6、冒泡排序演算法?
function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i += 1) { for (var j = 0; j < len - i - 1; j += 1) { if (arr[j + 1] < arr[j]) { var temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } }}var arr = [-1, -5, 0, 300, 90, 90, -5];bubbleSort(arr);console.log(arr);