ホームページ  >  記事  >  ウェブフロントエンド  >  js共通コード集_javascriptスキル

js共通コード集_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:00:111083ブラウズ

各コードの前には、機能の注釈やパラメータの要件などの説明テキストが付いています。これ以上のコメントは必要ありません。 明確に見るために、ここに小さなディレクトリを順番に示します:
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 > ninja.yell(n-1) ? " : "やあ ";
}
};
alert(ninja.yell(4))//結果は次のとおりです: hiyaaaa;
var サムライ = { Yell: ninja.yell };
//var ninja = {}; // ここのコメントが結果に影響するかどうか
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 < len; i ){
arr.push(str.charAt( i)) ;
if (str.charCodeAt(i) > 255){
curSize = 2;
if(size === curSize || size === curSize - 1){
return arr .join('');
}
}else{
curSize ;
if(size === curSize){
return arr.join(''); 🎜>}
}
}
};
var str = '#%*...&#What 1234abcd は長さが足りません';
alert(str.length); 🎜>alert(str.substr(0, 15));
alert(subStr(str, 15));

/**//*
機能: ページ上の要素の絶対位置を取得します (ページの左上隅を基準とした)
@param {string} 位置を求めるノード DOM 要素
*/
関数 getAbsPosition(node) {
var t = ノード.offsetTop;
var l = ノード.offsetLeft;
while (node.offsetParent) {
t = ノード.offsetTop; 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, unknown, i = str.length>while (i-- ) {
var t = str.charAt(i);
map[t] == 未定義 ? マップ[t] = 1; ] > maxCount) {
maxChar = t;
maxCount = map[maxChar];
}
return "文字:" maxChar "回数:"
}
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 b;

/**//*
関数: 順序付けられた配列を分解します (順序付けされていないランダムな配列を生成します)
説明: 基本的な並べ替えアルゴリズム 誰もが明確に理解する必要があります。ただし、プログラミングでは逆の操作、つまり元の順序付けられた配列要素をランダムに破壊する操作がよく使用されます。
以下に 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 がまだ残っています。元の位置
平均して約 15% のオブジェクトが元の位置に残っているため、基本的に使用可能になります。
ランダムに nums*2 回交換すると、実際に使用可能になります。オブジェクトの % はまだ元の位置にあります
*/
function daluan(nums) {
var array=[];
for (var i = 0; i array[i] = i;
}
for (var i = 0; i var rand = parseInt(nums * Math.random());
var temp = array[i];
array[i] = array[rand];
}
return array; >// 方法 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 までご連絡ください。