数组跟字符串的操作方法

 一:数组的操作方法


    1.添加

    unshift方法:

    -给数组开头添加一个或多个元素,返回一个新数组

    语法:数组.unshift(元素,元素...)-返回新数组的长度

    示例:

    var arr=['a','b','c'];

    var l=arr.unshift('d')

    console.log(arr);

    console.log(l);

    var l=arr.unshift('d','e')

    console.log(arr);

    console.log(l);  


    给数组末尾添加一个或多个元素

    语法:数组.push(元素,元素...)-返回新的数组长度

    示例:

    var arr=['a','b','c'];

    arr.push('d')

    var l=arr.push('d','e')

    console.log(arr);

    console.log(l);


    splice方法:

    给数组任意一个位置添加1个或多个元素

    添加一个元素:

    语法:数组.splice(开始下标,删除个数,新元素,新元素...)

    示例:

    var arr=['a','b','c'];

    var brr = arr.splice(1, 0, 'e')

    添加多个元素:

    var brr = arr.splice(1, 0, 'e', 'f')

   


    2.删除

    shift方法:-将数组开头的元素删掉

    语法:

    数组.shift()-返回被删掉的元素

    示例:

    var arr = ['a', 'b', 'c'];

    var ele=arr.shift()

    console.log(arr);

    console.log(ele);


    pop方法:

    将数组最后一个元素删除

    语法:数组.pop()-返回被删掉的元素

    示例:

    var arr=['a','b','c'];

    var ele=arr.pop()

    console.log(arr);

    console.log(ele);


    splice方法:

    删除一个元素

    语法:数组.splice(开始下标,删除个数)-返回所有被删掉元素组成的新数组

    示例:

    var arr=['a','b','c'];

    var brr = arr.splice(1, 1)

    console.log(brr)

    console.log(arr)

    删除多个元素:

    语法:

    数组.splice(开始下标,删除个数,在删除位置放入一个或多个元素)-返回所有被删掉元素组成的新数组

    var brr = arr.splice(1, 2);

    console.log(arr);

    console.log(brr);


    3.修改

    splice方法:

    修改一个元素:

    语法:数组.splice(开始下标,删除个数,新元素,新元素...)返回所有被删掉元素组成的新数组

    var arr=['a','b','c'];

    var brr=arr.splice(1,1,'e');

    修改多个:

    var brr=arr.splice(1,2,'e','f');

    console.log(arr);

    console.log(brr);

   


    数组的其他方法:



 

    排序数组:

    sort方法-对数组中的元素进行排序

    语法:数组.sort()-注意不是按照数字大小排序的,按照字符串大小进行排序,返回这个数组本身

    如果想让数组中元素按数字大小进行排序,并返回这个数组本身,那么:

    var arr = [11,5,9,7,3,4,6]

    arr.sort(function(a,b){

        return a-b

        return b-a

    })

    var brr=arr.sort(function(a,b){

        return a-b

        return b-a

    });

    console.log(arr);

    console.log(brr);

    console.log(arr===brr)



 

    翻转数组:

    语法:数组.reverse()-返回当前数组

    示例:

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

    var brr = arr.reverse()

    console.log(arr);

    console.log(brr);

    console.log(arr===brr);



 

    拼接成一个字符串的方法:

    join方法:-将数组中所有元素通过指定的连接符,拼接成一个字符串

    语法:

    数组.join(连接符)-返回连接后的字符串

    如果省略连接符,默认使用逗号连接

    var arr = ['a', 'b', 'c'];

    var str = arr.join('') 将所有元素直接拼接在一起

    var str = arr.join()  

   

   


    合成一个更大数组的方法:

    concat:

    语法:数组.concat(1个或多个元素或数组)-返回组合后的更大的数组

    示例:

    var arr = ['a', 'b'];

    var brr = arr.concat('c')

    var brr = arr.concat('c', 'd')

    var brr = arr.concat(['c', 'd'])

    var brr = arr.concat(['c', 'd'], ['e', 'f'])

    console.log(brr)


 


    截取数组:

    slice:

    语法:数组.slice(开始下标,结束下标)-返回被截取出来的一段组成的数组,结果不包含结束下标对应的字符

    示例:

    var arr = ['a', 'b', 'c', 'd', 'e', 'f']

     var brr = arr.slice(2, 5);

    var brr = arr.slice(2) 如果省略结束下标,就截取到数组的末尾

    var brr = arr.slice() 在省略结束下标的基础上,还可以省略开始下标,从开头截取到末尾

     console.log(brr)

    console.log(arr)

    console.log(arr === brr)



 

    查找该元素在数组中是否存在:

    indexOf方法-查找某个元素在数组中第一次出现的下标

    语法:

    数组.indexOf(元素)-找到元素就返回对应的下标,找不到元素就返回-1 */

    var arr=[1,5,6,7,3,2,5,9,1,3,6,8,7]

    找1在arr中第一次出现的下标

    var index=arr.indexOf(10)

    语法:数组.indexOf(元素,开始查找的下标)-找到元素就返回对应的下标,找不到元素返回-1

    var index=arr.indexOf(1,2)

    console.log(index)


    lastIndexOf-查找某个元素在数组中最后一次出现的下标-语法和返回值跟indexOf是一样的

     var arr=[1,5,6,7,3,2,5,9,1,3,6,8,7]

    var index=arr.lastIndexOf(1)

    var index=arr.lastIndexOf(1,5)

    console.log(index)


    把数组中每个元素都处理成新元素,将所有新元素组成一个新的数组:

    语法:

    var brr=数组.map(function(value,index){

        value表示遍历出来的每个元素

        index是每个value对应的下标-可选项

        return新元素

    })

    示例:

    有数组[1, 3, 4] - 将每个元素都扩大10倍, 形成新的数组

    var arr = [1, 3, 4]

    var brr = arr.map(function (v) {

        var newValue = v * 10

        return newValue

    })

    console.log(brr);

    var arr = [{

            name: '张三',

            age: 12

        },

        {

            name: '李四',

            age: 15

        },

        {

            name: '王五',

            age: 20

        }

    ]

    var brr = arr.map(function (v) {

        v.age = v.age + 1

        console.log(v);

        return v

    })

    console.log(brr);


 


    过滤数组的方法:

    filter方法-将数组中满足条件的所有元素组成新的数组返回

    语法:

    var brr=数组.filter(function(value,index){

        value表示遍历出来的每个元素

        index是每个value对应的下标//可选项

        return 条件

    })

    var arr = [50,65,88,76,35,24]

 var brr = arr.filter(function(v) {

    return v < 60

 })

console.log(brr);

示例:

var arr = [

    {

         category: '水果',

        name: '苹果'

     },

    {

        category: '衣服',

        name: 'T恤'

    },

   {

        category: '肉',

        name: '鸡腿'

     },

    {

        category: '水果',

         name: '芒果'

    }

]

var brr = arr.filter(function(v) {

    return v.category === '水果'

 })

console.log(brr);



 

遍历数组的方法:

forEach方法 - 专业用来遍历数组的

 语法:

数组.forEach(function(value, index) {

    value表示每个值

    index表示每个下标

})

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

 arr.forEach(function(v, i) {

     if(i === 1) {

         break  forEach方法中不能使用break和continue关键字

 }

   console.log(v, i);

 })



 

 数组去重:

 for循环去重:

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

    if(arr[arr.length-2] === arr[a]) {

        arr.splice(a, 1)

        a--

    }

 }

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

     for(var a=b+1; a<arr.length; a++) {

         if(arr[b] === arr[a]) {

            arr.splice(a, 1)

             a--

        }

    }

 }

 console.log(arr);


 indexOf去重:

将arr中每个元素都判断是否在brr中,如果不在,就放进brr,如果在,就下一个元素判断

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

    // 判断arr[a]是否在brr中

    var index = brr.indexOf(arr[a])

    // index>=0正常的下标 - 在brr中

    // index == -1 表示不在brr中

    if(index < 0) {

        brr.push(arr[a])

    }

}

console.log(brr);


 


对象属性去重:

思路:{}对象中的键 - 唯一的

 将数组中每个元素都做为对象的键,最终只会保留一个

var arr = [1, 1, 1, 2, 2, 3, 2, 4, 'a', 'a', 'b']

定义空对象

 var obj = {}

遍历数组

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

 将每个 arr[a] 都作为对象的键

obj.键 = 值 // 使用变量代表键 - 必须使用[]语法

obj[键] = 值

     obj[ arr[a] ] = typeof arr[a]

 }

 console.log(obj);

将对象中的每个键都放在一个数组中

 定义空数组

 var brr = []

遍历对象

 for(var key in obj) {

 key是对象的每个键

 将每个键都放在数组中

 brr.push(+key)

 如果原本的值是number类型就转成数字放入brr

    brr.push( obj[key] === 'number' ? +key : key )  

 }

 console.log(brr);


 set方法去重:

 ES6中新增了数据类型set,set的一个最大的特点就是数据不重复。Set函数可以接受一个数组(或类数组对象)作为参数来初始化,利用该特性也能做到给数组去重

 function unique(arr) {

    if (!Array.isArray(arr)) {

        console.log('type error!')

        return

    }

    return [...new Set(arr)]

}


使用 lodash 的 uniq()

_.uniq([2, 1, 2]);   => [2, 1]


 



 

判断数组中是否至少有一个元素是满足条件的-返回布尔值

语法

布尔值 = 数组.some(function(value, index) {

    return 条件

})

示例:

var arr = [10, 20, 30, 50, 40, 80, 99, 100]

var bool = arr.some(function(v) {

    return v > 90

 })

 console.log(bool);


 


 判断数组中是否所有元素都满足指定条件-返回布尔值

 语法:

布尔值 = 数组.every(function(value, index) {

    return 条件

})



 

查找数组中第一个满足指定条件的元素:

语法:

元素 = 数组.find(function(value, index) {

    return 条件

})

找到了就会返回元素,找不到就返回undefined



 

查找数组中满足指定条件的第一个元素对应的下标

语法:

下标 = 数组.find(function(value, index) {

    return 条件

})

找到了就会返回下标,找不到就返回-1


reduce - 归并数组 - 数组求和

语法:

数组.reduce(function(a, b) {

    // reduce遍历数组,会少遍历一次

    // a第一次遍历,代表第一个元素,第二次开始,就代表上次遍历return的结果

    // b第一次遍历,代表第二个元素,第二次遍历,代表第三个元素,第三次遍历,代表第4个元素...

})


 








 

字符串的方法:

charCodeAt - 根据字符串的下标获取到对应的字符的阿斯克码

// 语法:字符串.charCodeAt(下标) - 返回阿斯克码(10进制的数字)



 

indexOf - 找一个字符或小字符串在大字符串中第一次出现的下标

// 语法:字符串.indexOf(字符/小字符串) - 返回下标或-1


lastIndexOf - 找一个字符或小字符串在大字符串中最后一次出现的下标

// 语法:字符串.lastIndexOf(字符/小字符串) - 返回下标或-1


slice - 截取字符串

// 语法:字符串.slice(开始下标, 结束下标) - 返回截取出来的小字符串

// 结果不包含结束下标对应的字符


split - 将字符串分割成一个数组

// 语法:字符串.split('分割符') - 返回数组


replace - 将字符串中的指定部分替换成新内容

// 语法:字符串.replace('被替换的部分', 新内容) - 返回替换后的完整字符串



 

trim - 去除字符串两端的空格

// 语法:字符串.trim()

// trimLeft - 去除左边空格

// trimRight - 去除右边空格


toUpperCase - 将字符串中每个字符都转成大写


toLowerCase - 将字符串中所有字符都转成小写


startsWith - 判断字符串是否以某个字符或小字符串开头的

// 语法:字符串.startsWith(字符/小字符串) - 返回布尔值


endsWith - 判断字符串是否以某个字符或小字符串结尾的

语法:字符串.endsWith(字符/小字符串) - 返回布尔值


includes - 判断字符串中是否包含某个字符或小字符串

// 语法:字符串.includes(字符/小字符串) - 返回布尔值


substr - 截取字符串

// 语法:字符串.substr(开始下标, 截取的长度)



 

substring - 截取字符串

// 语法:字符串.substring(开始下标, 结束下标) - 返回的结果不包含结束下标对应的字符



 

3个截取字符串方法的区别

// var str = 'i love you'

// slice:可以使用负数来表示下标

// console.log( str.slice(-8, -4) );

// console.log( str.slice(6, 2) ); // 如果开始下标在结束下标右边,就截取到空字符串

// substring:不能使用负数表示下标

// console.log( str.substring(-8, -4) ); // 空字符串

// console.log( str.substring(6, 2) ); // 当开始下标在结束下标的右边,先将两个参数交换位置,然后再截取

// substr:他的开始下标,可以使用负数表示

// console.log( str.substr(-2) );


字符串的比较:

字符串比较的原则:

// 字符串的比较规则:逐字符比较

// 先拿第一个字符出来比较,能决定大小,不继续比了,第一个字符决定了整个字符串的大小

// 第一个字符相等,再拿第二个字符比较 ....

// 计算机显示的每个字符,其实在计算机内部都有对应的二进制指令,所以,每个字符之间有大小关系的

/*

阿斯克码表中规律:

数字0~9对应的阿斯克码:48~57

大写字母A~Z的阿斯克码:65~90

小写字符a~z的阿斯克码:97~122

*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值