关于对字符串和数组的处理

JS数组操作

  1. 创建数组

var arr=new Array();

var arr=[]

 

  1. join()-------------------数组.join(分隔符)  => 字符串

var arr=[1,2,3]

arr.join()   è“1,2,3”

arr.join(‘-’)  è”1-2-3”

 

  1. push()和pop()

push() : 从数组后面添加任意个参数 arr.push(‘param1’,’param2’)

pop() :  从数组后面抛出一个你参数 arr.pop()

 

  1. shift() 和 unshift()

shift() : 参数数组的第一项 arr.shift()

unshift() : 从数组前面添加任意项 arr.unshift(‘param1’,’param2’)

 

  1. sort()

arr.sort() : 升序排序一个数组

["a", "d", "c", "b"].sort()  //  ["a", "b", "c", "d"]

[13, 24, 51, 3].sort()     //[13, 24, 3, 51]

注意:上面的例子,不能按照数值排序得分原因是:sort()方法执行的时候,对于每个数组项都会调用toString()方法转型

 

 

  1. reverse()

反转数组项

[13, 24, 51, 3].reverse()  // [3, 51, 24, 13] 原数组改变

 

  1. concat()

将参数传入原数组中,这个方法会先创建原数组的副本,然后将接收到的参数添加到数组的尾部,最后返回新构成的数组

var arr=[1,2,3]

arr.concat(9,[5,6])   //  [1,2,3,9,5,6]

 

  1. slice()

(1)传入两个参数:slice(开始下标,结束下标)  (返回下标之间所截取的新数组,不包括结束项);如果传入的结束项为负数slice(正数,负数),则截取的数组开始项和结束项都不包括

(2)传入一个参数:slice(开始下标)  (返回从传入下标到数组末尾·所形成的新数组,不包括开始项

var arr = [1,3,5,7,9,11];

 

var arrCopy = arr.slice(1); è [3, 5, 7, 9, 11]

var arrCopy2 = arr.slice(1,4);è [3, 5, 7]

var arrCopy3 = arr.slice(1,-2);è [3, 5, 7]

var arrCopy4 = arr.slice(-4,-1);è [5, 7, 9]

 

  1. splice() 

可以实现数组的删除、插入、替换;

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

删除:splice(要删除的第一项的位置,要删除的项数)

        arr.slplice(0,2)  è[3,4,5]

插入:splice(起始位置,0(要删除的项数),要插入的项1,要插入的项2…)

      arr.splice(2,0,a,b) è [1,2,a,b,3,4,5]  //从第二个2位置开始,变成要插入

//数据,其他数据紧接其后

替换:splice(起始位置,要删除的项数,要插入的任意数量的项)

      arr.splice(2,1,a) è[1,2,a,4,5]

 

  1. indexOf()和 lastIndexOf() 【返回项所在位置,找不到返回-1】

indexOf(要查找的项,【查找起点位置(从0开始)】);从数组的开头开始查找

lastIndexOf(要查找的项,【查找起点位置(从0开始)】);从数组末尾开始查找

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

console.log(arr.indexOf(5)); //2

console.log(arr.lastIndexOf(5)); //5

console.log(arr.indexOf(5,2)); //2

console.log(arr.lastIndexOf(5,4)); //2(从倒数第四个位置开始找,5在数组中的位置)

 

console.log(arr.indexOf("5")); //-1

  

【用于做数组去重】

var arr=[1,33,22,22,6,4,4,4]

var temp=[]

function compare(arr){

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

        if(temp.indexOf(arr[i])==-1){

            temp.push(arr[i])

        }

    }

    return temp;

}

compare(arr)

console.log(temp)

 

  1. forEach() (ES5新增)

对数组做循环遍历:arr.forEach(每个数组项,[数组项索引],[数组本身])

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

 

arr.forEach(function(x,index,arr){

      console.log(a+”-”+index+”-”(arr==arr))

})

输出:
    1-0-true

2-1- true

3-2- true

4-3- true

5-4- true

 

【for in 遍历数组】

for(var i in arr){

    console.log(i+"<--->"+ arr[i])

}

 

     输出:

     0<--->1

1<--->2

2<--->3

3<--->4

4<--->5

 

 

[遍历对象]

var arr=["a","b","c"]

var obj={

    name:"a",

    num:"123"

}

// for(in) 遍历数组的时候

for(i in arr){

    console.log("索引"+i)

    console.log("数组项值"+arr[i])

}

// $.each遍历数组

    $.each(arr,function(index,value){

        console.log("索引"+index)

        console.log("数据项值"+value)

    })

    // 输出:

    // 0<--->1

    // 1<--->2

    // 2<--->3

    // 3<--->4

    // 4<--->5

// for(in) 遍历对象的时候

for(i in obj){

    console.log("属性名"+i)

    console.log("属性值"+obj[i])

}

//$.each遍历对象的时候

$.each(obj,function(index,value){

        console.log("属性名"+index);

        console.log("属性值"+value)

    })

 

  1. map() (ES5新增)

对数组中的每一项运行指定的函数

var arr2=arr.map(function( item ){

    return  一个对item操作的新数组

})

【使用map做数组去重】

var arr=[1,1,1,3,3,22,22,6,4,4,4]

var arr2=[]

arr.map(function( item ){

    if(arr2.indexOf ( item )== -1 ){

        arr2.push( item )

    }

})

console.log(arr2)

 

  1. filter() (ES5新增)

“过滤功能”,对数组中的每一项运行指定的函数,返回满足过滤条件的数组

【使用filter 做数组去重】

   var arr=[1,1,1,3,3,22,22,6,4,4,4]

var  arr2=[]

arr.filter(function(value,index){

    // value是每个数据项的值;index是数据项索引

    if( arr2.indexOf(value)==-1){

        arr2.push(value)

    }

})

console.log(arr2)

 

 

  1. every() (ES5新增)

判断数组中的每一项是否符合条件,只有全部符合条件的时候才返回true

 

var  flag;

flag=arr.every(function(value){

    return  value>100

})

console.log(flag) //false

 

  1. some() (ES5新增)

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

var arr2 = arr.some(function(x) {

return x < 3;

});

console.log(arr2); //true

var arr3 = arr.some(function(x) {

return x < 1;

});

console.log(arr3); // false

 

  1. reduce()和 reduceRight() (ES5新增)








JS字符串操作

  1. charAt( )

charAt(位置):返回指定单个位置的字符串

var str=”Hello”

console.log(str.charAt(0))  è “H”

 

  1. concat()

str1.concat(str2)

--使用“+“更方便

 

  1. indexOf() 与 lastIndexOf()

indexOf(‘需查找的字符串’,[检索开始位置] )

检索字符串,对大小写字符敏感。若检索不到返回-1

lastIndexOf()

与上传参一直,区别在于从后往前找首次出现的位置,指的是找到字符串后,字符串在原字符串中的位置

var str="Hello world!"

console.log(str.lastIndexOf(‘Hello’)); //0

 

 

  1. match()

返回与传入参数匹配的字符串的值

--match(‘字符串’)

--match(正则表达式)

var str="Hello world!"
console.log(str.match(‘Hello’)); //Hello

stringObject.match(regexp)

//常用于查找与传入正则表达式一致的字符串

 

  1. replace()

replace(正则表达式/子串,替换成的目标字符串)

var str="Visit Microsoft!"

document.write(str.replace(/Microsoft/, "W3School"))

èVisit W3School!

 

 

  1. search()

*返回匹配字串的位置

*传入字串或者正则表达式,找不到返回-1

var str="Visit W3School!"

document.write(str.search(/W3School/))   //6

document.write(str.search(/w3school/))   //-1(search对大小写敏感)

document.write(str.search(/w3school/i))   //6  忽略大小写
  1. slice()

---提取字符串的某个部分

---str . slice ( start , end )--【包括start,不包括end】

   start: 传入需要截取的开始位置和结束位置,如果开始位置传入复数,则表示从最后一位算起,-1表示最后一位

   end: 若不制定,即截取start到字符串最后;若负数,即从后面开始算

var str="Hello happy world!"
document.write(str.slice(6))   // happy world!
document.write(str.slice(6,11))    //happy

 

  1. split()

---将字符串分割成数组

---string.split() 与 Array.join() 的作用相反

---split(separator,howmany)
   separator:传入正则表达式或者字符串,以什么作为分割字符串的标准
   howmany: 可选,表示返回数组的最大程度
var str="How are you doing today?"
document.write(str.split(" ") + "<br />") //[How,are,you,doing,today?]
document.write(str.split("") + "<br />")
//[ H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?]
document.write(str.split(" ",3))//[How,are,you]
 

 

  1. substr 与 substring

---substr(start , length)   【包括start】

   start: 必选,若是负数,从后面数起

   end: 可选,若不制定,则截取直到字符串末尾

var str="Hello world!"
document.write(str.substr(3))    // lo world!

 

 

---substring(start, ,stop)

【其内容是start-stop-1位置的字符串,即包括start不包括stop】

   start: 必选,非负整数

   stop:可选,非负数;若不指定,则到末尾

var str="Hello world!"
document.write(str.substring(3))  // lo world!

 

posted @ 2018-04-28 14:24  crystal_wei  阅读(492)  评论(0编辑  收藏  举报