常见的数组/字符串操作

 

2、正则去掉字符中空格

       String.prototype.trim=function(){
      return this.replace(/(^\s*)|(\s*$)/g, "");
   }
   String.prototype.ltrim=function(){
      return this.replace(/(^\s*)/g,"");   //去掉左边
   }
   String.prototype.rtrim=function(){
      return this.replace(/(\s*$)/g,"");   //去掉右边
   }

正则去掉字符串中所有空格 

  var card = '  62 22 0236 0209 9812 331';
    var card = card.replace(/\s/g, "");
    alert(card); //输出 6222023602099812331

正则表达式验证邮箱格式,返回true/false

 function emailTest(str){
     var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;
     if(reg.test(str)){
         return true;
     }
     return false;
 }

 var str = "example@qq.com";
 console.log(emailTest(str));

写一个function,清除字符串前后的空格(兼容所有浏览器)

function trim(str) {
    if (str && typeof str === "string") {
        return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符
    }
}

3、数组中等于item元素 出现的次数

function count(arr, item) {

        var count = 0;
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] == item) {
                count++;
            }
        }
        return count;
    }

    var arr = [1, 2, 4, 4, 3, 4, 3];
    console.log(count(arr, 4));

4.  字符串中某个字符的个数

function count(str, item){
    var str2 = [];
    for(var i = 0; i<str.length; i++){
        if(str.charAt(i) == item){
            str2.push(str.charAt(i));
        }
    }
    return str2.length;
}

var str3 = 'fe443gff';
console.log(count(str3, 'f'))

 

5.数组去重

       function remove(arr) {
        var obj = {};
        var temp = [];
        for (var i = 0; i < arr.length; i++) {
            
            if (!obj[arr[i]]) { //判断对象的属性
                obj[arr[i]] = 1;
                temp.push(arr[i]);
            }
        }
        return temp;
    }
    var arr2 = [1, 2, 3, 4, 4, 2];
    console.log(remove(arr2));

(2):

var arr = [2,3,4,4,5,2,3,6],
   arr2 = [];
for(var i = 0;i< arr.length;i++){
    if(arr2.indexOf(arr[i]) < 0){
        arr2.push(arr[i]);
    }
}
console.log(arr2);
结果为:[2, 3, 4, 5, 6]

(3):

var arr = [2,3,4,4,5,2,3,6];
var arr2 = arr.filter(function(element,index,self){
return self.indexOf(element) === index;
});
console.log(arr2);

结果为:[2, 3, 4, 5, 6]

6.删除数组的第一个元素,不直接改变数组

       var a=[2,1,3,4,5,8];

       function delFirst(arr){

         var arr2=arr.slice(0);

         arr2.shift();

         return arr2;

       }

       console.log(delFirst(a));

7.判断一个字符串中出现次数最多的字符,和次数

var str = 'addddfffssdfsadfsdfsafjsd';

    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 iMax = 0;
    var str = '';
    console.log(json); //{a:3,d:8,f:7,s:6,j:1}
    //遍历 json对象取最大值
    for (var val in json) {

        if (json[val] > iMax) {
            iMax = json[val];
            str = val;
        }
    }
    console.log('出现最多的字符:' + str, '出现次数:' + iMax);

//(2)

function findStr(str) {
    var json = {};
    var maxNum = 0;
    var maxStr = '';

    for (var i = 0; i < str.length; i++) {
        json[str.charAt(i)] === undefined ? json[str.charAt(i)] = 1 : (json[str.charAt(i)] ++);
        //
        if(json[str.charAt(i)] > maxNum){
            maxNum = json[str.charAt(i)];
            maxStr = str.charAt(i);
        }
    }
    return maxStr +'出现'+ maxNum +'次';
 }

var str2 = 'asffsssderty';
console.log(findStr(str2))//s出现4次

7.2求一个数组中出现最多次数的数字,和次数

function findMost(arr) {
        var json = {};
        var maxNum = 0;
        var maxEle = null;
        for (var i = 0; i < arr.length; i++) {

            json[arr[i]] === undefined ? json[arr[i]] = 1 : (json[arr[i]]++);

            if (json[arr[i]] > maxNum) {
                maxNum = json[arr[i]];
                maxEle = arr[i];
            }
        }
        console.log(maxNum)
        return maxEle + '出现' + maxNum + '次';
    }

    var len = [5, 4, 5, 6, 6, 6];
    console.log(findMost(len))

8.求字符串的字节长度(中文字符占两个字节)

function getLen(str){
    var json = {len:0};
    var pattern = /[\u4e00-\u9fa5]/; //unicode编码符合中文字符
    for(var i = 0; i<str.length; i++){
        if(pattern.test(str.charAt(i))){
            json['len']++;
        }
    }
    return json['len'] + str.length;
}

var str = 'css的方法';
console.log(getLen(str))

9.javascript面向对象中继承实现

  子构造函数中执行父构造函数,并用call\apply改变this
克隆父构造函数原型上的方法

   Person.prototype.showName = function() {
        console.log(this.name);
    }
    Person.prototype.showJob = function() {
        console.log(this.job);
    }

    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    function Student(name, age, job) {
        Person.apply(this, arguments);
        this.job = job;
    }

    // for (var i in Person.prototype) {
        Student.prototype = Person.prototype;
    //  } 

   var stu = new Student('tom', 18, 'stu');
       stu.showName()
    stu.showJob();
    console.log(stu.age); //18

10.函数的链式调用 类似:add(1)(2)

       function add(a){

         var sum=a;

         var tmp=function(y){

           sum=sum+y;

               return tmp;//为了完成链式调用

         }

         //以字符串的形式返回对象的原始值

         tmp.toString=function(){

            return sum;

         };

       return tmp;

        }

        console.log(add(1)(2)(3));//6

11. this的典型应用

  事件: onclick  this->触发事件的对象

  构造函数:  this->new 出来的object

  call/apply : 改变this

12. 降低页面加载时间的方法

    1. 压缩css 、js文件

    2. 合并js、css文件 ,减少http请求

    3. 外部js、css文件放在最底下

4.减少dom操作,尽可能用变量替代不必要的dom操作

 

13. 数组排序,如[[1,2],[2,1],[1,3]]->[[1,2],[1,3],[2,1]]

        vararr1=[[2,4],[1,2],[2,1],[1,3]];

        function comparetwo(a,b){

           if(a[0]!=b[0]){

                   return a[0]-b[0];

               }else{

                   return a[1]-b[1];

               }

         }

         var result=arr1.sort(comparetwo);

         console.log(result);

15.查找数组中某元素的位置

function indexOf(arr, item){

        for(var i =0; i<arr.length; i++){
            if(arr[i] == item){
                return i
            }
        }
        return -1;
    }

    var arr2 = [1,2,3,4];
    console.log(indexOf(arr2, 3));

16.数组求和

function sum(arr) {

  var sum=0;

  arr.forEach(function(value){

      sum+=value;

  });

  return sum;

}

var arr=[1,2,3,4];

console.log(sum(arr));

17.移除数组item 元素,不直接修改原数组

function remove(arr,item){

   var arr2=[];

   arr.forEach(function(val){

     if(val!=item){arr2.push(val);}

   });

   return arr2;

}

18.删除数组item元素,改变原始数组

function remove(arr, item){
        for(var i = 0; i < arr.lenngth; i++){
            if(arr[i] == item){
                arr.splice(i, 1);
                i--;
            }
        }
        return arr;
    }
    var arr3 = [1,3,4,4,3,5,6]
    console.log(remove(arr3,4));

19.删除数组的最后一个元素,不直接改变数组

 function truncate(arr) {

   var arr2=arr.slice(0);

   arr2.pop();

   return arr2;

 }

 function truncate2(arr) {

   vararr2=arr.slice(0,arr.length-1);//返回一个新数组

   return arr2;

 }

 var arr=[1,2,3,4,5];

 console.log(truncate2(arr));//1,2,3,4

20.splice向/从数组中添加/删除项目,然后返回被删除的项目(不直接修改原数组)。

function remove2(arr,item){

    var newarr = arr.slice(0);

    for(var i=0;i<newarr.length;i++){

        if(newarr[i] == item){

            newarr.splice(i,1);

            i--;  //删除一个元素后,后面的元素会提前一位

        }

    }

    return newarr;

}

var arr2 = [2,2,3,4,8,2,3]

 console.log(remove2(arr2, 3)) //(5) [2, 2, 4, 8, 2]

21.添加元素 不直接修改原先数组

function append(arr, item) {

    // return arr.push(item);

    return arr.concat([item]);

}

var arr=[1,2,3,5];

console.log(append(arr,4));

22.在数组开头添加元素,不直接改变数组

 function prepend(arr, item) {

   var arr2=arr.slice(0);

   arr2.unshift(item);

   return arr2;

  }

  var arr=[1,2,3,4,5,6];

  console.log(prepend(arr,0));

23.数组指定位置添加元素,不直接改变数组

  function insert(arr, item,index) {

         var arr2=arr.slice(0);

         arr2.splice(index,0,item);

         return arr2;

   }

       var arr=[1,2,3,4];

       console.log(insert(arr,5,2));

24. 冒泡排序

     function bubbleSort(arr){

          for(var i=0;i<arr.length-1;i++){

               for(var j=i+1;j<arr.length;j++){

                   //获取前一个值和后一个值进行比较

                      if(arr[i]>arr[j]){

                            //创建中间变量 交换值

                         var cur=arr[j];

                            arr[j]=arr[i];

                            arr[i]=cur;

                      }

               }

              }

              return arr;

        }

25.数组快速排序

        function quickSort(arr){

         if(arr.length<=1){return arr};

         //选基准值,可以是任意位置

       var key=Math.floor(arr.length/2);

         var keyValue=arr.splice(key,1)[0];

         //定义两个数组

         var left=[];

         var right=[];

         for(var i=0;i<arr.length;i++){

               //小于基准的方左边、大于右边

            if(arr[i]<keyValue){

                   left.push(arr[i]);

               }else{

                   right.push(arr[i]);

               }

         }

         //递归

         return quickSort(left).concat([keyValue],quickSort(right));

         //return typeof keyValue;

        }

        var array=[5,1,6,4,10,11,15,0,2];

        console.log(quickSort(array));

        //console.log(bubbleSort(array));

26.json 对象数组排序

var data = [
    {
        name: "海外事业部",
        value: 0.58
    }, {
        name: "内销",
        value: 0.36
    }, {
        name: "互联网中心",
        value: 0.78
    }];

    function compare(a, b) {
        return b.value - a.value;
    }

    data.sort(compare);
    console.log(data);

 

js常用字符串操作函数


我这里只是列举了常用的字符串函数,具体使用方法,请参考网址

concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串。

indexOf() – 返回字符串中一个子串第一处出现的索引。如果没有匹配项,返回 -1 。

charAt() – 返回指定位置的字符。

lastIndexOf() – 返回字符串中一个子串最后一处出现的索引,如果没有匹配项,返回 -1 。

match() – 检查一个字符串是否匹配一个正则表达式。

substr() 函数 -- 返回从string的startPos位置,长度为length的字符串

substring() – 返回字符串的一个子串。传入参数是起始位置和结束位置。

slice() – 提取字符串的一部分,并返回一个新字符串。

replace() – 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。

search() – 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。

split() – 通过将字符串划分成子串,将一个字符串做成一个字符串数组。

length – 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。

toLowerCase() – 将整个字符串转成小写字母。

toUpperCase() – 将整个字符串转成大写字母。

 

Array相关的属性和方法


这里只是做了相关的列举,具体的使用方法,请参考网址

Array 对象属性
constructor 返回对创建此对象的数组函数的引用。

length 设置或返回数组中元素的数目。

prototype 使您有能力向对象添加属性和方法。

Array 对象方法
concat() 连接两个或更多的数组,并返回结果。

join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

pop() 删除并返回数组的最后一个元素。  

shift() 删除并返回数组的第一个元素

push() 向数组的末尾添加一个或更多元素,并返回新的长度。

unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

reverse() 颠倒数组中元素的顺序。

slice() 从某个已有的数组返回选定的元素

sort() 对数组的元素进行排序

splice() 删除元素,并向数组添加新元素。

toSource() 返回该对象的源代码。

toString() 把数组转换为字符串,并返回结果。

toLocaleString() 把数组转换为本地数组,并返回结果。

valueOf() 返回数组对象的原始值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值