陣列排序,字串math,replace練習

2022-02-05 10:10:08 字數 3569 閱讀 3728

1. 關於陣列排序

排序一直是程式設計中的熱門話題。在js中,陣列有個sort()方法。在不傳引數預設情況下,陣列的sort()方法原理是:對數每項呼叫tostring()方法,比較字串按公升序排序陣列。看下面的例子。

var arra = [null, undefined, 3, 2, 5, 21, , p:'hello'}];

var arrb = [undefined, null, 3, 2, 5, 21,, p: 'hello'}];

var arrc = [null, undefined, 3, 2, 21, , p:'hello'},,},

},},

}, 'u', 'v', 'nukk','nulk'];

arra.sort();

//結果是:[object, 2, 21, 3, 5, null, undefined]

arrb.sort();//

結果是:[object, 2, 21, 3, 5, null, undefined]

arra.sort()[0].p;//

hello

arrc.sort();

上面的例子說明:

a. sort()方法不傳比較函式時,的確是對每項呼叫了tostring()方法[對null應該是使用string(null)]轉換成字串再進行公升序排序的

b. undefined不會參與排序,直接放最後面

當要使用其它標準對陣列進行排序時,就要傳入乙個比較函式作為引數。原理及執行過程沒有弄清楚(有知道的請告訴下),但得到如下結論:

var arrd = [3, 5, 1, 8, 10];

console.log(arrd.sort(compare));

function

compare(v1, v2)

下面是乙個實際demo:

/*

* * 為陣列實現乙個排序方法,能夠num、string、date、character和object的排序,

* 對object型別排序時,按照某個屬性排序。只考慮陣列中存放都是相同型別的資料

* @param order 為true表示公升序,false表示降序

* @param key 物件的鍵值 */

array.prototype.sametypesort = function

(order, key)

temparr.sort(ascending);

break

;

default

:

while(i < this

.length)

temparr = temparr.sametypesort(true

); }

//如果是時間,物件還要將還原成排序前的值

if(type === 'date')

}if(type === 'object')

}i++;}}

return order ?ret : ret.reverse();

function

type(target) ).tostring.call(target).slice(8, -1).tolocalelowercase();

}function

ascending(v1, v2)

};

下面是通過的qunit的測試**:

test( "數值排序", function

() );

test( "字串排序", function

() );

test( "時間排序", function

() );

test( "物件排序", function

() ,,];

strictequal(arr.sametypesort(

true, 'key')[0].f, 'y');

strictequal(arr.sametypesort(

false, 'key')[0].f,'z');

console.log(arr.sametypesort(

true, 'key'));

console.log(arr.sametypesort(

false, 'key'));

});

2. match,replace函式練習

a. **千分

/*

* * 在整數部分對費用進行千分。一開始想用正則來做,但實現過程中發現各種問題,最後**變成下面的樣子了

* @param feestr 有效的費用數值字串

* @returns 進行了千分格式化後的字串 */

function

splitfee(feestr)

else

/*match = feestr.match(/\./);

leftctx = regexp.leftcontext;//整數部分

rightctx = regexp.rightcontext; 使用正則會有乙個bug,若後面match匹配失敗,後面的rightctx始終會儲存前次匹配的值

*/leftctx = leftctx ?leftctx : feestr;

rightctx = rightctx ? '.'+rightctx : '';

ret = (leftctx.split('').reverse().join('').replace(/(\d)/g, function

(m, ms, offset, targetstr) ).split('').reverse().join('')+rightctx).replace(/^\,/,'');

return

ret;

}

通過的qunit測試**

test( "replace, match練習:數值字串千分", function

() );

b. 交換包含兩個單詞的字串

/*

* * 交換單詞字串中的兩個單詞

* @param str

* @returns */

function

swaptwowords(str)

//qunit測試

test( "replace練習:交換單詞", function

() );

c. 字串模板替換方法

/*

* * 字串模板替換方法

* @param str

* @param obj */

function

format(str, obj) )/gm, function

(m, ms, offset, targetstr) );}//

qunit測試

test( "字串模板format方法", function

() ';

strictequal(format(str, ), '100

xyz');

});

字串陣列排序

1,給定乙個字串陣列。按照字典順序進行從小到大的排序。思路 1,對陣列排序。可以用選擇,冒泡都行。2,for巢狀和比較以及換位。3,問題 以前排的是整數,比較用的比較運算子,可是現在是字串物件。字串物件怎麼比較呢?物件中提供了用於字串物件比較的功能。compareto 方法。public class...

隨機字串陣列排序

要求 建立乙個長度是8的字串陣列 使用8個長度是5的隨機字串初始化這個陣列 對這個陣列進行排序,按照每個字串的首字母排序 無視大小寫 注1 不能使用arrays.sort 要自己寫 注2 無視大小寫,即 a x 和 a xx 沒有先後順序 string s new string 8 用來存放8句字串...

字串 字串排序

頻率統計 將頻率轉換為索引 資料分類 回寫頻率統計 統計每個字元出現的次數 將頻率轉換為索引 確定不同字元首位置 從右到左檢查檢查鍵中的字元 public class lsd public class msd public static void sort string a private stat...