數(shù)組祖乳、字符串逗堵、數(shù)學(xué)函數(shù)

1. 數(shù)組方法里poppush眷昆,shift蜒秤,unshift汁咏,joinsplit 分別有什么作用作媚?

var arr = [3, 5, 6, 3, 8, 3, 9] 

i. pop的作用是刪除數(shù)組的最后一個元素

arr.pop () // [3, 5, 6, 3, 8, 3]


ii.``` push```的作用是在數(shù)組最后添加一個元素
- ```
arr.push (10)    // [3, 5, 6, 3, 8, 3, 9, 10]

iii.shift的作用是在刪除數(shù)組的第一個元素

arr.shift () // [5, 6, 3, 8, 3, 9]


iv.```unshift```的作用是在數(shù)組的最前面添加一個元素
- ```
arr.unshift (12)    // [12, 3, 5, 6, 3, 8, 3, 9]

v.join方法的作用是將數(shù)組使用參數(shù)作為連接符鏈接成一個字符串攘滩,不會修改原數(shù)組的內(nèi)容

arr.join ( '-' ) // '3-5-6-3-8-3-9'


vi.```split```方法可以用來增加、刪除纸泡、插入或修改數(shù)組中的元素
- ```
var arr = [1, 5, 7, 3, 21, 32]
  • 刪除
arr. splice (1, 2)    // [1, 3, 21, 32] ```
- 添加

arr. splice (2, 0, 8, 9) // [1, 5, 8, 9, 7, 3, 21, 32]```

  • 插入/修改
arr. splice (2, 0, 5, 4)    // [1, 5, 5, 4, 7, 3, 21, 32]
arr. splice (2, 3, 6, 7)    // [1, 5, 6, 7, 32]

代碼題

* <u>數(shù)組</u> *

1. 用splice實現(xiàn)pop漂问,pushshift女揭,unshift方法

代碼鏈接

  • // pop 方法 ---------------------
    var arr1 = [2, 6, 2, 8, 4, 9];
    function pop(arr) {
      var a = arr[arr.length-1]
      arr.splice (arr.length-1, 1);
      return a;
    }
    
    // push 方法 ---------------------
    var arr2 = [2, 6, 2, 8, 4, 9];
    function push(arr, val) {
      arr.splice (arr.length, 0, val);
      return arr.length;
    }
    
    // shift 方法 ---------------------
    var arr3 = [2, 6, 2, 8, 4, 9];
    function shift(arr) {
      arr.splice (0,1);
      return arr(0);
    }
    
    // unshift 方法 ---------------------
    var arr4 = [2, 6, 2, 8, 4, 9];
    function unshift(arr, val) {
      arr.splice (0,0,val);
      return arr.length;
    }
    

###2. 使用數(shù)組拼接出如下字符串:
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-2%E6%95%B0%E7%BB%84.html)
- ```
  var prod = {
    name: '女裝',
    styles: ['短款', '冬季', '春裝']
  };

  function getTpl(data){
    var tp1 = '<dl class="product">';
    tp1 += '<dt>' + data.name + '</dt>';
    for (var i = 0; i < data.styles.length; i++) {
      tp1 += '<dd>' + data.styles[i] + '</dd>';
    }
    tp1 += '</dl>';
    return tp1;
  };

  var result = getTpl(prod);
  console.log (result);

3. 寫一個find函數(shù)级解,實現(xiàn)下面功能

代碼鏈接

  • var arr = [ "test", 2, 1.5, false ]
    function find(arr,val) {
      for (var i=0; i<arr.length; i++) {
        if (arr[i] === val) {
          var a = i;
        };
      }
      var b = a != undefined ? a : -1;
      return b
    }
    find(arr, "test") // 0
    find(arr, 2) // 1
    find(arr, 0) // -11
    

###4. 寫一個函數(shù)```filterNumeric```,把數(shù)組 ```arr```中的數(shù)字過濾出來賦值給新數(shù)組```newarr```田绑, 原數(shù)組```arr```不變
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-4%E6%95%B0%E7%BB%84.html)
- ```
  var arr = ["a", "b", 1, 3, 5, "b", 2];
  function filterNumeric(arr) {
    var newarr = [];
    for (var i=0; i<arr.length; i++) {
      if (typeof arr[i] === 'number') {
        newarr.push(arr[i]);
      };
    };
    return newarr;
  }
  newarr = filterNumeric(arr);  //   [1,3,5,2]

5. 對象obj有個className屬性勤哗,里面的值為的是空格分割的字符串(和html元素的class特性類似),寫addClass掩驱、removeClass函數(shù)芒划,有如下功能:

代碼鏈接

  • var obj = {
      className: 'open menu'
    }
    
    // 定義函數(shù) addClass(obj,str) ------------------------------------------
    function addClass(obj,str) {
      var a = true;
      var b, c;
      var arr = (obj.className).split(' ');   // 將字符串轉(zhuǎn)化為數(shù)組
    
      for (var i=0; i<arr.length;i++) {       // 遍歷數(shù)組arr,判斷數(shù)組中是否有與str相同的元素
        if (arr[i] === str) {
          a = false;                          // 若存在欧穴,a改為false
        };
      };
      arr.push(str);                          // 將str添加到數(shù)組arr最后
    
      b = str + '不存在民逼,所以' + 'obj.className變?yōu)? + '\'' + arr.join(' ') + '\'';
      c = '因為'+ str + '已經(jīng)存在,所以不會再次添加' + str;
    
      if (a) {
        obj.className = arr.join(' ');
        return b;
      } else {
        return c;
      }
    }
    
    addClass(obj, 'new') // obj.className='open menu new'
    addClass(obj, 'open')  // 因為open已經(jīng)存在涮帘,所以不會再次添加open
    addClass(obj, 'me') // me不存在拼苍,所以 obj.className變?yōu)?open menu new me'
    console.log(obj.className)  // "open menu new me"
    
    // 定義函數(shù) removeClass(obj,str) ---------------------------------------
    function removeClass(obj,str) {
      var a = false;
      var b, c, d;
      var arr = (obj.className).split(' ');   // 將字符串轉(zhuǎn)化為數(shù)組
      for (var i=0; i<arr.length;i++) {       // 遍歷數(shù)組,判斷arr中是否存在與str相同的元素
        if (arr[i] === str) {
          a = true;                           // 如果存在相同元素调缨,a變?yōu)閠rue
          arr.splice (i, 1)                   // 在arr中將相同的元素刪除
        };
      };
    
      b = arr.join(' ');
      c = '去掉obj.className里面的' + str + '疮鲫,變成' + '\'' + b + '\'';
      d = '因為' + str + '不存在,所以此操作無任何影響';
    
      if (a) {
        obj.className = b;
        return c;
      } else {
        return d
      }
    }
    removeClass(obj, 'open') // 去掉obj.className里面的 open弦叶,變成'menu new me'
    removeClass(obj, 'blabla')  // 因為blabla不存在俊犯,所以此操作無任何影響
    

###6. 寫一個```camelize```函數(shù),把```my-short-string```形式的字符串轉(zhuǎn)化成```myShortString```形式的字符串伤哺,如
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-6%E6%95%B0%E7%BB%84.html)
- ```
  function camelize(str) {
    var arr = str.split('-');
    if (arr.length < 2) {
      return;
    }
    for (var i = 1; i < arr.length; i++) {
      arr[i] = arr[i].replace(arr[i][0], arr[i][0].toUpperCase());
    }
    return arr.join('');
  }

7. 如下代碼輸出什么燕侠?為什么?

代碼鏈接

  •     arr = ["a", "b"];
        arr.push( function() { alert(console.log('hello hunger valley')) } );
        // 此時arr變?yōu)閇"a","b",function(){...}]
        arr[arr.length-1]()  
        // 調(diào)用函數(shù)立莉,故輸出'hello hunger valley'绢彤,彈窗undefined
    

###8. 寫一個函數(shù)```filterNumericInPlace```,過濾數(shù)組中的數(shù)字蜓耻,刪除非數(shù)字茫舶。要求在原數(shù)組上操作
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-8%E6%95%B0%E7%BB%84.html)
- ```
  arr = ["a", "b", 1, 3, 4, 5, "b", 2];
  //對原數(shù)組進(jìn)行操作,不需要返回值
  function filterNumericInPlace(arr) {
    for (var i = arr.length-1; i>=0; i--) {   // 因為是在原數(shù)組上操作媒熊,所以如果遞增奇适,會出現(xiàn)改變未經(jīng)判斷的元素的索引號坟比,導(dǎo)致漏刪,倒數(shù)遞減則會避免這種情況
      if (typeof(arr[i]) != 'number') {
        arr.splice (i,1);
      }
    }
  }
  filterNumericInPlace(arr);
  console.log(arr)  // [1,3,4,5,2]

9. 寫一個ageSort函數(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(a, b){return a.age - b.age;});
    }
    /*
    function ageSort(arr) {
      arr.sort(
        function(p1,p2) {
          return p1.age > p2.age;
        }
      )
    }
    */
    ageSort(people) // [ bob, mary, john ]
    

###10. 寫一個```filter(arr, func)```函數(shù)用于過濾數(shù)組嚷往,接受兩個參數(shù)葛账,第一個是要處理的數(shù)組,第二個參數(shù)是回調(diào)函數(shù)(回調(diào)函數(shù)遍歷接受每一個數(shù)組元素皮仁,當(dāng)函數(shù)返回```true```時保留該元素籍琳,否則刪除該元素)。實現(xiàn)如下功能:
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-10%E6%95%B0%E7%BB%84.html) 
- ```
  function isNumeric (el){
      return typeof el === 'number';
  }
  arr = ["a",3,4,true, -1, 2, "b"]
  function filter(arr,func) {
    for (var i = arr.length-1; i>=0; i--) {
      if (func(arr[i]) === false) {
        arr.splice(i,1);
      };
    };
    return arr;
  }
  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ù)

* <u>字符串</u> *

11. 寫一個 ucFirst函數(shù)贷祈,返回第一個字母為大寫的字符

代碼鏈接

  • function ucFirst(str) {
      var arr = str.split('');
      arr[0] = arr[0].toUpperCase();
      return arr.join('');
    }
    ucFirst("hunger")   // "Hunger"
    

###12. 寫一個函數(shù)```truncate(str, maxlength)```, 如果```str```的長度大于```maxlength```趋急,會把```str```截斷到```maxlength````長,并加上...势誊,如:
[代碼鏈接](http://book.jirengu.com/jirengu-inc/jrg-vip9/members/%E7%8E%8B%E5%BA%B7/%E4%BB%BB%E5%8A%A1%E5%8D%81%E5%85%AB%EF%BC%9A%E6%95%B0%E7%BB%84%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E3%80%81%E6%95%B0%E5%AD%A6%E5%87%BD%E6%95%B0/task18-12%E5%AD%97%E7%AC%A6%E4%B8%B2.html)
- ```
  function truncate(str,num) {
    var arr = str.split('');
    if (arr.length > num) {
      arr.length = num;
      arr[arr.length-1] = arr[arr.length-1] + '...';
      return arr.join('');
    } else {
      return str;
    }
  }
  // truncate("hello, this is hunger valley,", 10) == "hello, thi...";
  // truncate("hello world", 20)) == "hello world"

* <u>數(shù)學(xué)函數(shù)</u> *

代碼鏈接

13. 寫一個函數(shù)呜达,獲取從min到max之間的隨機整數(shù),包括min不包括max

  • function randomNumber1(min,max) {
      return parseInt(Math.random()*(max-min)+min);
    }
    

###14. 寫一個函數(shù)粟耻,獲取從min都max之間的隨機整數(shù)查近,包括min包括max
- ```
  function randomNumber2(min,max) {
    return parseInt(Math.random()*(max-min+1)+min);
  }

15. 寫一個函數(shù),獲取一個隨機數(shù)組挤忙,數(shù)組中元素為長度為len霜威,最小值為min,最大值為max(包括)的隨機整數(shù)

  • function randomArr(min,max,len) {
      var arr = [];
      for (var i=0; i<len; i++) {
        arr[i] = randomNumber2(min,max);
      }
      return arr;
    }
    

###16. 寫一個函數(shù)册烈,生成一個長度為 n 的隨機字符串戈泼,字符串字符的取值范圍包括0到9,a到 z赏僧,A到Z大猛。
- ```
  var DataRange = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  function getRandStr (len) {
    var arr = [];
    var n;
    for (var i=0; i<len; i++) {
      n = parseInt(Math.random()*62);
      arr[i] = DataRange[n];
    }
    return arr.join('');
  }

本教程版權(quán)歸本人和饑人谷所有,轉(zhuǎn)載請注明來源次哈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胎署,一起剝皮案震驚了整個濱河市吆录,隨后出現(xiàn)的幾起案子窑滞,更是在濱河造成了極大的恐慌,老刑警劉巖恢筝,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哀卫,死亡現(xiàn)場離奇詭異,居然都是意外死亡撬槽,警方通過查閱死者的電腦和手機此改,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侄柔,“玉大人共啃,你說我怎么就攤上這事占调。” “怎么了移剪?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵究珊,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么班缎? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任扩灯,我火速辦了婚禮,結(jié)果婚禮上敞峭,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好瞬浓,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓬坡,像睡著了一般瑟蜈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渣窜,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天铺根,我揣著相機與錄音,去河邊找鬼乔宿。 笑死位迂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的详瑞。 我是一名探鬼主播掂林,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坝橡!你這毒婦竟也來了泻帮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤计寇,失蹤者是張志新(化名)和其女友劉穎锣杂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番宁,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡元莫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝶押。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踱蠢。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棋电,靈堂內(nèi)的尸體忽然破棺而出茎截,到底是詐尸還是另有隱情苇侵,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布企锌,位于F島的核電站衅檀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏霎俩。R本人自食惡果不足惜哀军,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望打却。 院中可真熱鬧杉适,春花似錦、人聲如沸柳击。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌肴。三九已至蹬叭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間状知,已是汗流浹背秽五。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饥悴,地道東北人坦喘。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像西设,于是被迫代替她去往敵國和親瓣铣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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