數(shù)組件豌、字符串疮方、數(shù)學(xué)函數(shù)

問答

數(shù)組方法里push、pop茧彤、shift骡显、unshift、join曾掂、split分別是什么作用惫谤?
  • push:向數(shù)組的末尾添加一個或更多元素,并返回新的長度珠洗。
  • pop:刪除并返回數(shù)組的最后一個元素溜歪。
  • shift:刪除并返回數(shù)組的第一個元素。
  • unshift:向數(shù)組開頭添加一個或更多元素许蓖,并返回新的長度蝴猪。
  • join: 把數(shù)組的所有元素放入一個字符串,元素通過制定的分隔符進(jìn)行分割膊爪。
  • split:將字符串分割成字符串?dāng)?shù)組自阱,并返回此數(shù)組。

代碼

用 splice 實(shí)現(xiàn) push米酬、pop沛豌、shift、unshift方法
function push(arr,val){
    arr.splice(arr.length,0,val);
    return arr.length;
}
function pop(arr){
    return arr.splice(arr.length-1,1)[0];
}
function shift(arr){
    return arr.splice(arr[0],1)[0];
}
function unshift(arr,val){
    arr.splice(arr[0],0,val);
    return arr.length;
}
使用數(shù)組拼接出如下字符串
var prod = {
  name: '女裝', 
  styles: ['短款', '冬季', '春裝']
};
function getTplStr(data){
  var htmls=[];
  htmls.push('<dl class="product">');
  htmls.push('<dt>'+data.name+'</dt>');
  for(var i=0;i<data.styles.length;i++){
    htmls.push('<dd>'+data.styles[i]+'</dd>');
  }
htmls.push('</dl>')
return htmls.join('\n');
};
var result = getTplStr(prod); //result為下面的字符串

<dl class="product"> 
  <dt>女裝</dt> 
  <dd>短款</dd> 
  <dd>冬季</dd> 
  <dd>春裝</dd>
</dl>
寫一個find函數(shù)淮逻,實(shí)現(xiàn)下面的功能
var arr = [ "test", 2, 1.5, false ];
function find(arr,n){
  for(var i=0;i<arr.length;i++){
    if(arr[i] === n){
      console.log(arr[i]);
    }
    break;
    else if(arr[i] !=== n){
      console.log(-1);
    }
  }
}
find(arr, "test") // 0
find(arr, 2) // 1
find(arr, 0) // -1
寫一個函數(shù)filterNumeric琼懊,把數(shù)組 arr 中的數(shù)字過濾出來賦值給新數(shù)組newarr, 原數(shù)組arr不變 (****)
arr = ["a", "b", 1, 3, 5, "b", 2];
newarr = filterNumeric(arr); // [1,3,5,2];

function filterNumeric(a){
  var newarr=[];
  for(var i=0;i<arr.length;i++){
    if(typeof (a[i]) == "number"){
       newarr.push(a[i]);
    }
  }
  console.log(newarr);
}

對象obj有個className屬性爬早,里面的值為的是空格分割的字符串(和html元素的class特性類似)哼丈,寫addClass、removeClass函數(shù)筛严,有如下功能:(****)
var obj = {
 className: 'open menu'
}
addClass(obj, 'new') // obj.className='open menu new'
addClass(obj, 'open') // 因為open已經(jīng)存在醉旦,所以不會再次添加
openaddClass(obj, 'me') // me不存在,所以 obj.className變?yōu)?open menu new me'
console.log(obj.className) // "open menu new me"
removeClass(obj, 'open') // 去掉obj.className里面的 open桨啃,變成'menu new me'
removeClass(obj, 'blabla') // 因為blabla不存在车胡,所以此操作無任何影響

function addClass(obj,x){
  var newarr = obj.className.split(" ");
  for(var i=0;i<newarr.length;i++){
     if(newarr[i] === x){
        return;
    }
  }
  obj.className+=" "+x;
}

function removeClass(obj,x){
  var newarr = obj.className.split(" ");
  for(var i=0;i<newarr.length;i++){
    if(newarr[i]===x){
      newarr.splice(i,1);
      i--;
    }
  }
obj.className = newarr.join(" ");
}

寫一個camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串照瘾,如 (***)
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'

function camelize(str){
  var myarr=str.split("-");
  for(var i=1;i<myarr.length;i++){
    myarr[i] = (myarr[i][0].toLocaleUpperCase()) + (myarr[i].substr(1));
  }
return myarr.join("");
}
如下代碼輸出什么匈棘?為什么?
arr = ["a", "b"];
arr.push( function() { alert(console.log('hello hunger valley')) } );
arr[arr.length-1]() // 輸出hello hunger valley

控制臺輸出hello hunger valley,彈窗顯示undefined析命。向數(shù)組arr里添加了新的元素主卫,而這個元素是一個函數(shù)體逃默,此時數(shù)組的下標(biāo)為2,所以arrarr.length-1直接調(diào)用了該函數(shù)簇搅。alert的參數(shù)不是純本文所以顯示undefined完域。

寫一個函數(shù)isPalindrome,判斷一個字符串是不是回文字符串(正讀和反讀一樣,比如 abcdcba 是回文字符串瘩将, abcdefg不是)
function isPalindrome(str){
  var myarr = str.split("").reverse();
  if(str==myarr.join("")){
    console.log("true");
  }
  else{
    console.log("false");
  }
}
isPalindrome(abcdcba);
isPalindrome(abcdefg);
寫一個ageSort函數(shù)實(shí)現(xiàn)數(shù)組中對象按age從小到大排序
var john = { name: "John Smith", age: 23 }
var mary = { name: "Mary Key", age: 18 }
var bob = { name: "Bob-small", age: 6 }
var people = [ john, mary, bob ]


function ageSort(arr){
  arr.sort(function(p1,p2){
      return (p1.age - p2.age);
    } )
}
ageSort(people);
寫一個filter(arr, func) 函數(shù)用于過濾數(shù)組吟税,接受兩個參數(shù),第一個是要處理的數(shù)組姿现,第二個參數(shù)是回調(diào)函數(shù)(回調(diào)函數(shù)遍歷接受每一個數(shù)組元素肠仪,當(dāng)函數(shù)返回true時保留該元素,否則刪除該元素)建钥。實(shí)現(xiàn)如下功能:
function isNumeric (el){ 
  return typeof el === 'number'; 
}
arr = ["a",3,4,true, -1, 2, "b"]
arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2], 過濾出數(shù)字
arr = filter(arr, function(val) { return typeof val === "number" && val > 0 }); // arr = [3,4,2] 過濾出大于0的整數(shù)


function filter(arr, func){
  var newarr=[];
  for(var i=0;i<arr.length;i++){
    if(func(arr[i])){
      newarr.push(arr[i]);
    }
  }
return newarr;
}
寫一個 ucFirst函數(shù)藤韵,返回第一個字母為大寫的字符
ucFirst("hunger") == "Hunger"


function ucFirst(str){
  var arr=str.split("");
  arr[0]=arr[0].toLocaleUpperCase();
  return arr.join("");
}
寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength,會把str截斷到maxlength長熊经,并加上...泽艘,如
truncate("hello, this is hunger valley,", 10) == "hello, thi...";
truncate("hello world", 20) == "hello world"


function truncate(str, maxlength){
  if(str.length>maxlength){
    str=str.substring(0,maxlength)+"..."
  }
  return str;
}
寫一個函數(shù),獲取從min到max之間的隨機(jī)整數(shù)镐依,包括min不包括max
function rand(min,max){
  return Math.floor(min+Math.random()*(max-min))
}
寫一個函數(shù)匹涮,獲取從min都max之間的隨機(jī)整數(shù),包括min包括max
function rand(min,max){
  return Math.floor(min+Math.random()*(max-min+1))
}
寫一個函數(shù)槐壳,獲取一個隨機(jī)數(shù)組然低,數(shù)組中元素為長度為len,最小值為min务唐,最大值為max(包括)的隨機(jī)整數(shù)
function rand(len,min,max){
  var arr=[];
  for(var i=0;i<len;i++){
    arr.push(Math.floor(min+Math.random()*(max-min+1)));
  }
  return arr;
}
寫一個函數(shù)雳攘,生成一個長度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9枫笛,a到 z吨灭,A到Z。
function getRandStr(len){
  var result="";
  var str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  for(var i=0;i<len;i++){
    result +=str[Math.floor(Math.random()*str.length)];
  }
  return result;
}
var str = getRandStr(10);

本教程版權(quán)歸作者和饑人谷所有刑巧,轉(zhuǎn)載須說明來源喧兄!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啊楚,隨后出現(xiàn)的幾起案子吠冤,更是在濱河造成了極大的恐慌,老刑警劉巖恭理,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拯辙,死亡現(xiàn)場離奇詭異,居然都是意外死亡颜价,警方通過查閱死者的電腦和手機(jī)涯保,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門饵较,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遭赂,你說我怎么就攤上這事『崃荆” “怎么了撇他?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狈蚤。 經(jīng)常有香客問我困肩,道長,這世上最難降的妖魔是什么脆侮? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任锌畸,我火速辦了婚禮,結(jié)果婚禮上靖避,老公的妹妹穿的比我還像新娘潭枣。我一直安慰自己,他們只是感情好幻捏,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布盆犁。 她就那樣靜靜地躺著,像睡著了一般篡九。 火紅的嫁衣襯著肌膚如雪谐岁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天榛臼,我揣著相機(jī)與錄音伊佃,去河邊找鬼。 笑死沛善,一個胖子當(dāng)著我的面吹牛航揉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播路呜,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼迷捧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胀葱?” 一聲冷哼從身側(cè)響起漠秋,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抵屿,沒想到半個月后庆锦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轧葛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年搂抒,在試婚紗的時候發(fā)現(xiàn)自己被綠了艇搀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡求晶,死狀恐怖焰雕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芳杏,我是刑警寧澤矩屁,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站爵赵,受9級特大地震影響吝秕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜空幻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一烁峭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秕铛,春花似錦约郁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镜遣,卻和暖如春己肮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悲关。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工谎僻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寓辱。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓艘绍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秫筏。 傳聞我的和親對象是個殘疾皇子诱鞠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容