最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

js3種歸并操作的實(shí)例代碼_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:14:59
文檔

js3種歸并操作的實(shí)例代碼_javascript技巧

js3種歸并操作的實(shí)例代碼_javascript技巧:第一種: 代碼如下:/**良哥的*/function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (resul
推薦度:
導(dǎo)讀js3種歸并操作的實(shí)例代碼_javascript技巧:第一種: 代碼如下:/**良哥的*/function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (resul

第一種:
代碼如下:
/**良哥的*/
function merge(a, b) {
var aLen = a.length,
bLen = b.length,
maxLen = Math.max(aLen, bLen),
sumLen = aLen + bLen,
result = [],
ap = 0,
bp = 0;

while (result.length < sumLen) {
if (ap < aLen && bp < bLen) {
if(a[ap] > b[bp]){
result.push(b[bp++]);
} else {
result.push(a[ap++]);
}
} else if (!(ap < aLen)){
while(bp < bLen){
result.push(b[bp++]);
}
} else if (!(bp < bLen)){
while(ap < aLen){
result.push(a[ap++]);
}
}
}
return result;
}

第二種:
代碼如下:
/**魯軍*/
function merge(arr1, arr2){

var i = 0;
var j = 0;
var c = 0;
var k;
var len1 = arr1.length;
var len2 = arr2.length;
var arr = [];
for(;i if( arr1[i] > arr2[j] ){
arr.push( arr2[j] );
j++;
}else{
arr.push( arr1[i] );
i++;
}
//if(i==len1 || j==len2){
// break;
//}
}

if(i==len1){
//arr = arr.concat(arr2.slice(j));

for(k=j; k arr.push( arr2[k] );
}
}

if(j==len2){
//arr = arr.concat(arr1.slice(i))
for(k=i; k arr.push( arr1[k] );
}

}

return arr;
}

第三種:
代碼如下:
/*金銳的*/
function merge(a,b){
var x = 0;
var l = 0;
var list = [];
var aLen = a.length;
var bLen = b.length;

for(var i = 0; i < bLen; i++){
for(var j = x; j < aLen; j++){
if(b[i] < a[j]){
list.push(b[i]);
l = i;
break;
}else{
list.push(a[j]);
x++;
}
}
}

if(x == a.length){
for(var y = l; y < bLen; y++){
list.push(b[y]);
}
}else{
for(var z = x; z < aLen; z++){
list.push(a[z]);
}
}

return list;
}

經(jīng)過測(cè)試2個(gè)有序20W長(zhǎng)度的數(shù)組歸并耗時(shí)都在15毫秒以下。

以下有幾條經(jīng)驗(yàn)(在大量操作的時(shí)候才能體現(xiàn),平時(shí)不需要做這樣的優(yōu)化。代碼可讀性還是第一原則)

1:數(shù)組的concat方法比直接for循環(huán)push要慢。

2:for循環(huán)比while循環(huán)快。

3:var a = b || 3; //這種操作很消耗時(shí)間

4: break,continue 在已確定不需要再循環(huán)時(shí)很耗時(shí)。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js3種歸并操作的實(shí)例代碼_javascript技巧

js3種歸并操作的實(shí)例代碼_javascript技巧:第一種: 代碼如下:/**良哥的*/function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (resul
推薦度:
標(biāo)簽: 操作 js 代碼
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top