美文网首页
js算法题

js算法题

作者: 席小丽 | 来源:发表于2020-06-01 15:37 被阅读0次

    1.数组去重

    方法一:利用嵌套for循环和splice去重

    function arr1(arr){
      // 判断换传入的参数是否为数组
      if(!Array.isArray(arr)){
        console.log('不是一个数组');
        return false
      }
      // 如果是数组,执行如下代码
      for(let i=0;i<arr.length;i++){
        for(let j=i+1;j<arr.length;j++){
          // 如果第一个等于第二个,splice方法删除第二个
          if(arr[i] === arr [j]){
            arr.splice(j,1);
            j --;
          }
        }
      }
      return arr
    }
    let arr_1 = [1, 2, 3, 3, 4, 2, 5, 1,6];   // [1, 2, 3, 4, 5, 6]
    

    方法二:利用indexOf去重

    function arr2(arr){
      // 判断传入的参数是否为数组
      if(!Array.isArray(arr)){
        console.log('不是一个数组');
        return false
      }
      // 如果是数组,执行如下代码
      let array = [];
      for(let i=0;i<arr.length;i++){
        if(array.indexOf(arr[i]) == -1){
          array.push(arr[i])
        }
      }
      return array
    }
    let arr_2 = [1, 2, 3, 3, 4, 2, 5, 1,6];   // [1, 2, 3, 4, 5, 6]
    

    方法三:利用Set集合的特性去重

     function arr3(arr){
      return Array.from(new Set(arr))
    }
    let arr_3 = [1, 2, 3, 3, 4, 2, 5, 1,6];   // [1, 2, 3, 4, 5, 6]
    

    方法四:利用filter

    function arr4(arr){
      return arr.filter((val,index,item) => {
        return item.indexOf(val) === index;
      })
    } 
    let arr_4 = [1, 2, 3, 3, 4, 2, 5, 1,6];   // [1, 2, 3, 4, 5, 6]
    

    方法五:利用includes

    function arr5(arr){
      if(!Array.isArray(arr)){
        console('不是一个数组');
        return
      }
      var array = [];
      for(var i=0;i<arr.length;i++){
        if(!array.includes(arr[i])){  //includes 检测数组是否有某个值
          array.push(arr[i])
        }
      }
      return array
    }
    let arr_5 = [1, 2, 3, 3, 4, 2, 5, 1,6];   // [1, 2, 3, 4, 5, 6]
    

    2.统计字符串中出现最多的字符及其出现的次数

    function str(str){
      var json = {};
      for(var i=0;i<str.length;i++){
        if(!json[str.charAt(i)]){
          json[str.charAt(i)] = 1;
        }else{
          json[str.charAt(i)] ++;
        }
      }
      var isMax = 0;  // 次数
      var isKey = '';  // 出现最多的字母
      for(var key in json){
        if(json[key] > isMax){
          isMax = json[key]
          isKey = key
        }
      }
      console.log('出现次数最多的是:' + isKey + ',出现' + isMax + '次')  // 出现次数最多的是:5,出现13次
    }
    str('12555552555663399582555512');
    

    3.判断一个单词是否是回文

    function fn(str){
      // split  把一个字符串分割成字符串数组  (字符串转数组)
      // reverse 用于跌倒数组元素顺序
      // join 把数组中中所有元素放在字符串中  (数组转成字符串)
      return str === str.split('').reverse().join('');
    }
    fn(‘nodeedon’');  // true
    

    4. 九九乘法表

    for(var i = 1; i < 10; i++){
      for(var j = i; j > 0; j--){
        var num1 = j*i;
        var num2 = j + 'x' + i + '=' + num1
        console.log(num2)
      }
    }
    

    相关文章

      网友评论

          本文标题:js算法题

          本文链接:https://www.haomeiwen.com/subject/wpcszhtx.html