ホームページ  >  記事  >  ウェブフロントエンド  >  JS共通コードスニペットの整理_JavaScriptスキル

JS共通コードスニペットの整理_JavaScriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:59:07966ブラウズ

各コードの前には、機能の注釈やパラメータの要件などの説明テキストが付いています。これ以上のコメントは必要ありません。 明確に見るために、ここに小さなディレクトリを順番に示します:
window.setTimeout を書き換える、
再帰プログラムの戻りパターンを理解する、
長い文字列をインターセプトする、
ページ上の要素の位置を取得する絶対位置、
統計、重複文字の削除 (複数のメソッドで実装)、順序付けされた配列要素の
ランダム シャッフル (複数のメソッドで実装)。

コードをコピー コードは次のとおりです:

/*
機能: パラメーターとオブジェクトパラメーターを渡せるように window.setTimeout を変更します (setInterval にも使用できます)
使用方法: setTimeout(callback function, time, param 1, ... ., パラメータ n) (FF はネイティブ サポートを備えていますが、IE はサポートしていません)
*/
var __sto = setTimeout
window.setTimeout = function(callback,timeout,param){
var args = Array.prototype.slice.call(arguments,2);
var _cb = function(){
callback.apply(null,args);
__sto(_cb,タイムアウト);
}
関数 aaaaa(a,b,c){
alert(a b c);
window.setTimeout(aaaaa,2000,5,6,7); /**//*
関数: 再帰的プログラムの戻りパターンを理解する (内部から外部へ)
オブジェクト間のメンバーの相互参照
*/
var ninja = {
yell: function(n){
return n > 0 ? ninja.yell(n-1) "a" : "hiy";
}
};
alert(ninja.yell(4))//結果は次のとおりです: hiyaaaa;
var 侍 = { hell: ninja.yell }; = {}; / / ここのコメントが結果に影響するかどうか
try {
alert(samurai.yell(4))
} catch(e){
alert("うーん、これはダメだ! ninja.yell はどこへ行った?" );
} /**機能: 長い文字列をインターセプト
* @param {string} str インターセプトする文字列
* @param {number} size インターセプト長 (半角バイト長)
*/
var subStr = function(str, size){
var curSize = 0, arr = [];
for(var i = 0, len = str.length; i
arr.push(str.charAt(i)); (i) > 255){
curSize = 2;
if(size === curSize || size === curSize - 1){
return
}
}else{
curSize;
if(size === curSize){
return arr.join('');
}
}
} ;
var str = '#%*...Ӓabcd では長さが足りません';
alert(str.length); );
alert(subStr(str, 15));/**//*
機能: ページ上の要素の絶対位置を取得します (ページの左上隅を基準とした)
@param {string} 位置を求めるノード DOM 要素
*/
function getAbsPosition(node) {
var t = node.offsetTop;
var l = ノード。 offsetLeft;
while (node = ノード.offsetParent) {
t = ノード.offsetTop;
l = ノード.offsetLeft;
alert("top=" t "n " "left=" l );
}/**//*
機能: 統計、繰り返し文字の削除
@param str カウントする文字列
説明: 文字列内の繰り返し文字、または配列内の繰り返し文字、数字などをカウントするためによく使用されます。
ここではインターネットから収集した 2 つの典型的なタイプを示します。それぞれに 2 つの実装方法があり、さまざまな角度から書かれた他の多くのバリアントがあり、検索して学ぶことができます。 カウントするデータは配列または文字列のいずれかであり、String.split() または Array.join()
を使用して、関数パラメーターで必要な型に変換します。
*/ // タイプ 1: 新しいオブジェクトを使用してデータを保存する
var count1 = function (str) {
var map = {} 、maxCount = 0、maxChar 、未定義、i = str.length;
while (i--) {
var t = str.charAt(i);
map[t] == 未定義? マップ[t] = 1 : マップ[t] = 1;
if (マップ[t] > maxCount) {
maxCount = マップ[maxChar];
}
return "文字:" maxChar "回数:" maxCount;
}function s_0(a) { // ここのパラメータは配列型である必要があります
var b = {}, c = [], i;
for (i = 0; i if (!b[a[i]]) {
c[c.length] = a[i], b[a[i ]] = true;
}
}
return c;
}// タイプ 2: 正規表現の統計情報
var count2 = function (str) {
var most = str.split('').sort().join('').match(/(.)1*/g) //繰り返しの文字を並べます
most = most.sort(function (a, b) { return a.length - b.length }).pop(); // 出現頻度で並べ替えます
return most.length ': ' most[0]; >}function s_1(a) {
var a = a.join(""), b = [];
while (a.length > 0)
a = a.replace(new RegExp) ((b[b.length] = a.charAt(0)), "g"), "");
return
}/**//*
関数: 順序付けされたものをスクランブルします。 array (順序付けされていないランダムな配列を生成します)
説明: 基本的な並べ替えアルゴリズムについては誰もがよく知っているはずです。ただし、プログラミングでは逆の操作、つまり元の順序付けられた配列要素をランダムにシャッフルする操作がよく使用されます。
以下に 3 つの方法を示します。最初の方法は以前に自分で作成したもので、レベルが低かったため、コードの計算量が多すぎました。
そのため、いくつかの簡単で効率的な方法を探しました。インターネット。
2 つ目は、多くの人が聞いたことがある「シャッフル アルゴリズム」と言われています。
3 つ目は、実装が非常に簡単な JS の組み込みソート メソッドを使用することです。
*/
// 方法 1 (失敗の教訓を全員に教える)
function randArray(num) {
var rands = []
var ra = parseInt(num * Math) .random());
rands.push(ra);
for (var r = 0; r ra = parseInt(num * Math.random() );
for (var m = 0; m while (rands[m] == ra) {
ra = parseInt(num * Math.random() );
m = -1;
}
rands.push(ra)
//alert(rands); >}
//方法 2:
// 2 つの [0...array.Length) の間の乱数を選択し、2 つの添え字付き要素を交換します (これは順序付けにおいてより効率的です)
/*注: これは「シャッフル アルゴリズム」です。シャッフルの効果は次のとおりであることが証明されています。
ランダムに nums/2 回交換する効果は、平均すると、オブジェクトの約 1/3 のままです。元の位置にあります
基本的には、nums をランダムに 2 回交換した後でも使用可能であり、平均して約 15% のオブジェクトが元の位置に残っています
実際に使用できるのは、nums*2 回をランダムに交換し、約 2 回後です平均してオブジェクトの % が元の位置にあります
*/
function daluan(nums) {
var array=[];
for (var i = 0; i array[i] = i;
}
for (var i = 0; i < nums; i ) {
var rand = parseInt(nums * Math.random() );
var temp = array[i];
array[rand] = temp;
// 方法 3:
// 比較関数をランダムに渡す -1 または 1 を返すだけ (並べ替え効率が高くない可能性があります)
var testArray3=[1,2,3,4,5 ,6,7,8,9,10,22,33,55, 77,88,99];
testArray3.sort(function(){return Math.random()>0.5?-1:1; });
アラート(testArray3);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。