三十道JS常見程序題(一)

一、寫出代碼對下列數組去重並從大到小排列{5,2,3,6,8,6,5,4,7,1,9}正則表達式

function fn(arr){
for (var i = 0; i < arr.length-1; i++) {
for (var j = 0; j < arr.length-1-i; j++) { if(arr[ j]<arr[ j+1]){
var temp = arr[ j]; arr[ j]=arr[ j+1]; arr[ j+1]=temp;
                           }
                 }
}
for (i = 0; i < arr.length; i++) { var c=arr[i];
for (var s = i+1; s < arr.length; s++) { if(arr[s]==c)
arr.splice(s,1); s--;
}
}
}
return arr;
}
console.log(fn([5,2,3,6,8,6,5,4,7,1,9]).toString());

二、用 JavaScript 實現冒泡排序。數據爲 2三、4五、1八、3七、9二、1三、24算法

//升序算法function sort(arr){
for (var i = 0; i <arr.length; i++) {
for (var j = 0; j <arr.length-i; j++) { if(arr[ j]>arr[ j+1]){
var c=arr[ j];//交換兩個變量的位置arr[ j]=arr[ j+1];
arr[ j+1]=c;
}
};
};
return arr.toString();
}
console.log(sort([23,45,18,37,92,13,24]));

三、用 js 實現隨機選取 10–100 之間的 10 個數字,存入一個數組,並排序json

function randomNub(aArray, len, min, max) { if (len >= (max - min)) {
return '超過' + min + '-' + max + '之間的個數範圍' + (max - min - 1) + '個
的總數';
}
if (aArray.length >= len) {
aArray.sort(function(a, b) { return a - b
});
return aArray;
}
var nowNub = parseInt(Math.random() * (max - min - 1)) + (min + 1); for (var j = 0; j < aArray.length; j++) {
if (nowNub == aArray[ j]) { randomNub(aArray, len, min, max); return;
}
}
aArray.push(nowNub); randomNub(aArray, len, min, max); return aArray;
}
var arr=[]; randomNub(arr,10,10,100);

四、已知數組 var stringArray = [「This」, 「is」, 「Baidu」, 「Campus」], Alert 出」This is Baidu Campus」。數組

答案:var stringArray = ["This", "is", "Baidu", "Campus"] alert(stringArray.join(""))

五、已知有字符串 foo=」get-element-by-id」,寫一個 function 將其轉化成駝峯表示法」getElementById」。dom

function combo(msg){ var arr=msg.split("-"); for(var i=1;i<arr.length;i++){
arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);
}
msg=arr.join(""); return msg;

六、下面這段 JS 輸出什麼,並簡述爲何?ide

function Foo() { var i = 0;
return function () { console.log(i++);
}
}
var f1 = Foo(), f2 = Foo(); f1();
f1();
f2(); console.log(i);
0//f1=Foo() 至關於 f1 賦值爲函數 Foo()的返回值 f1=function(){ console.log(i++)
}
1//由於 f1=了一個 function 因此有了做用域,f2 和 f1 不一樣,不在一個內存中0
報錯  //i 爲 Foo 內部的變量全局不可訪問,全局中沒有 i 變量因此會報錯

7 、 有 這 樣 一 個 URL: http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,請寫一段 JS 程序提取 URL 中的各個 GET 參數(參數名和參數個數不肯定),將其按key-value 形式返回到一個 json 結構中,如{a:’1′, b:’2′, c:」, d:’ xxx’, e:undefined}。函數

function serilizeUrl(url) { var urlObject = {};
if (/\?/.test(url)) {
var urlString = url.substring(url.indexOf("?") + 1); var urlArray = urlString.split("&");
for (var i = 0, len = urlArray.length; i < len; i++) { var urlItem = urlArray[i];
var item = urlItem.split("="); urlObject[item[0]] = item[1];
}
return urlObject;
}
return null;
}

八、var numberArray = [3,6,2,4,1,5]; (考察基礎 API)
1) 實現對該數組的倒排,輸出[5,1,4,2,6,3]url

var numberArray = [3,6,2,4,1,5]; alert( numberArray .reverse())

2) 實現對該數組的降序排列,輸出[6,5,4,3,2,1]code

var numberArray = [3,6,2,4,1,5];
// a-b 輸出從小到大排序,b-a 輸出從大到小排序。numberArray .sort(function(a,b){
return b-a}); console.log((numberArray .join()));

九、輸出今天的日期,以 YYYY-MM-DD 的方式,好比今天是 2014 年 9 月 26
日,則輸出 2014-09-26htm

var d = new Date();
// 獲取年,getFullYear()返回 4 位的數字var year = d.getFullYear();
// 獲取月,月份比較特殊,0 是 1 月,11 是 12 月var month = d.getMonth() + 1;
// 變成兩位
month = month < 10 ? '0' + month : month;
// 獲取日
var day = d.getDate();
day = day < 10 ? '0' + day : day; alert(year + '-' + month + '-' + day);

十、將字符串」<tr><td>{$id}</td><td>{$name}</td></tr>」中的{$id} 替換成 10,{$nny (使用正則表達式)

答 案 : 」 <tr><td>{$id}</td><td>{$id}_{$name}</td></tr> 」 .replace(/{\$id}/g, ’ 10′).replace(/{\$name}/g, ‘Tony’);
相關文章
相關標籤/搜索