今回は、2018 年のフロントエンド面接でよくあるアルゴリズムの質問と、2018 年のフロントエンド面接の 注意事項 についてご紹介します。ここでは実際のケースを見てみましょう。
【関連する推奨事項: フロントエンドのインタビューの質問(2020)】
1オブジェクト配列に変換
var obj={ 0:'我', 1:'的', 2:'妈', 3:'呀', length:4}//obj格式必须是类似数组的格式(键值是索引,具有length属性)var _slice=[].slice;var objArr=_slice.call(obj);
function countMost(str) { const objCount = {}; str = str.split('').sort().join(''); for(let i=0; i<str.length; i++) { let lastIndex = str.lastIndexOf(str[i]); num = lastIndex - i + 1; objCount[str[i]] = num; i = lastIndex; } let maxStr = [], maxValue = 1; for(let p in objCount) { if(objCount[p] > maxValue) { maxStr = []; maxStr.push(p); maxValue = objCount[p]; }else if(objCount[p] == maxValue){ maxStr.push(p); } } return maxStr.length == 1? maxStr[0] : maxStr; }console.log(countMost('afjghdfffffraaaasdddddenas'));
3. 以下を見つけます。正の配列 最大の差
const arr = [10,5,11,7,8,9];function getMaxProfit(arr) { let max = arr[0], min = arr[0]; for(let i=1; i<arr.length; i++) { max = Math.max(max,arr[i]); min = Math.min(min,arr[i]); } return max - min; }console.log(getMaxProfit(arr));
4. 配列内の最大値または最小値を取得します
function maxAndMin(arr){ return { max:Math.max.apply(null,arr.join(',').split(',')), min:Math.min.apply(null,arr.join(',').split(',')) } }var arr = [22,0,[3,4,2,55]]; maxAndMin(arr).max;// 55maxAndMin(arr).min;// 0
5. 指定された長さのランダムな英数字文字列を生成します
function getRandomStr(len) { var str = ""; for( ; str.length < len; str += Math.random().toString(36).substr(2)); return str.substr(0, len); }
この記事のケースを読んだ後は、方法をマスターしたと思います。さらに興味深い内容については、php 中国語 Web サイトその他の関連記事を参照してください。
関連書籍:
jq を使用して複数の ajax を送信し、コールバックを実行するためのヒント
疑似要素の first-letter を使用してテキストの最初の文字を大文字にする方法
以上が2018 年のフロントエンド面接でよくあるアルゴリズムの質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。