JS常用的对象方法1——string和array对象

在JavaScript中,一切皆为对象,字符串,数字,数组,日期,json对象,甚至布尔值,都是对象。所以我们声明一个字符串,声明一个布尔值,它就是一个女朋友了,哦不,是对象。 [手动狗头] ,而不像PHP,需要new关键词去实例化 $girl = new Person(); 一个类(或者静态调用),才能成为对象。嗯,理解这一点,就好办了。 既然是对象,就有属性和方法,当我们声明一个字符串,它已经是一个对象了,我们可以直接调用它的方法了,下面介绍一些常用的方法。 ##一、String对象 ##### 方法1: substr(start,length) : 字符串截取,从指定索引开始,截取指定长度字符 ##### 方法2: substring(start,end) : 字符串截取,截取从指定索引开始,到指定索引结束中间的字符串 ,[ start,end) 注意: 1,方法1第二个参数指定了截取的长度,而方法2第二个参数指定截取的结束索引号 2,方法2截取的字符串包括起始索引号start的字符 , 但不包括结束索引号end的字符 ``` var str = 'hello world , hello china'; var a = str.substr(3,10); var b = str.substring(3,10); console.log(a);// 打印出:lo world , console.log(b);// 打印出:lo worl ``` ##### 方法3:search(regexp):返回字符串第一次出现的位置/索引号,如果没有返回-1 ``` var str = 'hello world , hello china'; var c = str.search('world'); console.log(c);// 打印出:6 ``` ##### 方法4: indexOf(searchString,position): 检索字符串,返回的是字符在字符串的下标,第二个非必传参数指定开始搜索的起始下标 ``` var str = 'hello world , hello china'; var d = str.indexOf('hello',2); console.log(d);// 打印出:14 ``` ##### 方法5:match(regexp):在字符串内检索指定的值或找到一个或多个正则表达式的匹配,返回的是值而不是值的位置 ``` var str = '报警电话110,火警电话119,求救电话120'; var e = str.match('电话'); var f = str.match(/[0-9]{3}/); var g = str.match(/[0-9]{3}/g);//如果有g修饰,则匹配多个 console.log(e); console.log(f); console.log(g); ``` [![javascript](http://static.tscgo.cn/FiYOPUtwHoM_3KLLlQSl6XZ954Sk "javascript")](http://static.tscgo.cn/FiYOPUtwHoM_3KLLlQSl6XZ954Sk "javascript") ##### 方法6:replace():替换匹配的字符串 ``` var str = '报警电话110,火警电话119,求救电话120'; var h = str.replace(/[0-9]{3}/,'***'); var i = str.replace(/[0-9]{3}/g,'***'); console.log(h); //打印出:报警电话***,火警电话119,求救电话120 console.log(i);//打印出:报警电话***,火警电话***,求救电话*** ``` #####方法7:slice():提取字符串片段,并在新的字符串中返回被提取的部分 ``` var str1 = 'nihaoya wobuhaoya' console.log(str1.slice(4,9)); //4位置开始,到9的前一个位置结束 console.log(str1.slice(2,14));//start位置开始,end前一个位置结束 console.log(str1);//原字符串不变 console.log(str1.slice(-1,0)); //返回的是空字符串 console.log(str1.slice(30,100)); //长度超过字符串的长度,返回空字符串 console.log(str1.slice(-1,10));//返回的是空字符串 ``` #####方法8:split():把字符分割成数组 ``` var str1 = "hello-thinkyou-thinkyou-very-much"; console.log(str1.split('')); var str2 = str1.split('-'); console.log(str2); console.log(str1);//原字符串不变 ``` [![js2](http://static.tscgo.cn/Fou-mVfTPbstTWJz8wenxUIG4yJw "js2")](http://static.tscgo.cn/Fou-mVfTPbstTWJz8wenxUIG4yJw "js2") #####方法9:大小写转换: 1,把字符串转换成大写:toLocaleUpperCase() , toUpperCase() 2,把字符串转换成小写:toLocaleLowerCase() , toLowerCase() 注意:对有些地区来说,针对地区的方法与其通用方法得到的结果相同,但少数语言(如土耳其语言)会为Unicode大小写转换应用特殊的规则,这时候就必须使用针对地区的方法来保证实现正确的转换。所以我们用toLocaleUpperCase() ,toLocaleLowerCase() 来进行转换会保险一些。 ## 二、array对象 ##### 属性1:length 返回数组的长度 ##### 方法1:把数组转换为字符串 注意: 1,toString() 方法 在其他对象eg:boolean,int,json 也是存在toString()方法的 2,join(separator)方法 separator参数为分隔元素的分隔符,默认不传则为逗号 , ``` var arr = [1,2,5,3,4,7,6]; var a = arr.toString(); console.log(a); //打印出: 1,2,5,3,4,7,6 var b = arr.join('-'); console.log(b); //打印出 : 1-2-5-3-4-7-6 ``` #####方法2:在数组的尾部推入push()与取出pop()元素. push()返回值是操作后新数组的长度,push()可以同时推入多个元素 pop()返回值是取出的元素 ``` var arr = [1,2,5,3,4,7,6]; var a = arr.push('苹果'); var b = arr.push('橘子','草莓'); console.log(a); // 打印出: 8 console.log(b); // 打印出: 10 console.log(arr); // 打印出:(10) [1, 2, 5, 3, 4, 7, 6, "苹果", "橘子", "草莓"] var c = arr.pop(); console.log(c); // 打印出: 草莓 console.log(arr); // 打印出:(9) [1, 2, 5, 3, 4, 7, 6, "苹果", "橘子"] ``` #####方法3:在数组的头部推入unshift()与取出shift()元素 unshift()返回新数组的长度,可以同时推入多个元素 shift()返回值是取出的元素 ``` var arr = [1,2,5,3,4,7,6]; var a = arr.unshift('苹果','香蕉'); console.log(a);// 打印出: 9 console.log(arr);// 打印出: (9) ["苹果", "香蕉", 1, 2, 5, 3, 4, 7, 6] var b = arr.shift(); console.log(b);// 打印出: 苹果 console.log(arr);// 打印出: (8) ["香蕉", 1, 2, 5, 3, 4, 7, 6] ``` #####方法4:slice(start,end):取出数组中的某一片段 返回从原数组中指定开始下标到结束下标之间的项组成的新数组(原数组不变) #####方法5:splice(start,deleteCount)删除数组中的某一片段 第一个参数为起始下标,第二个参数为删除的元素个数。返回值为删除的元素(原数组改变) ``` var arr = [1,2,5,3,4,7,6]; var b = arr.slice(2,4); console.log(b); //打印出: (2) [5, 3] var c = arr.splice(2,2); console.log(c); //打印出: (2) [5, 3] console.log(arr);//打印出返回被删除后的数组 (5) [1, 2, 4, 7, 6] ``` #####方法6:sort():按指定的参数对数组进行排序 注意: 1,默认是按照字母的升序,数字的升序排列,返回的值是经过排序后的数组 2,40会排5的前面,因为4 小于 5 ,所以我们给数字排序,要传入一个回调函数 ``` var arr = [2,1,5,3,40,7,60]; var a = arr.sort(); console.log(a); //打印出: (7) [1, 2, 3, 40, 5, 60, 7] var b = arr.sort(function (a,b) { return a-b; }); console.log(b); //打印出: (7) [1, 2, 3, 5, 7, 40, 60] var c = arr.sort(function (a,b) { return b-a; }); console.log(c);//打印出:(7) [60, 40, 7, 5, 3, 2, 1] ``` 3,同理,当我们需要给一个对象数组按照对象中某一个属性排序时,也需要传入一个回调函数: ``` var student = [ {name:'Mike',age:18}, {name:'Joe',age:22}, {name:'Mongo',age:9}, {name:'Tom',age:30} ]; var d = student.sort(compare('age')); function compare(prop) { return function (a,b) { var value1 = a[prop]; var value2 = b[prop]; return value1-value2; } } console.log(d); /** 打印出: 0: {name: "Mongo", age: 9} 1: {name: "Mike", age: 18} 2: {name: "Joe", age: 22} 3: {name: "Tom", age: 30} length: 4 __proto__: Array(0) */ ``` #####方法7:indexOf():从数组的开头向后查找,接受两个参数,要查找的项和查找起点的位置索引 ``` var arr = [2,1,5,3,40,7,40]; a = arr.indexOf(40,2); console.log(a); //打印出: 4 ``` #####方法8:forEach():对数组的每个元素执行一次提供的函数。 ``` var student = [ {name:'Mike',age:18}, {name:'Joe',age:22}, {name:'Mongo',age:9}, {name:'Tom',age:31} ]; student.forEach(function (item) { var desc = item.name+'今年'+item.age+'岁了'; if(item.age > 30) desc += ',还是没车没房'; console.log(desc); }); /** 打印出: Mike今年18岁了 Joe今年22岁了 Mongo今年9岁了 Tom今年31岁了,还是没车没房 * / ``` #####方法9:reverse() 方法用于颠倒数组中元素的顺序 改变原数组,返回颠倒后的数组: ``` var arr = ['小明','小红','小李']; var a = arr.reverse(); console.log(arr); // 打印出: (3) ["小李", "小红", "小明"] console.log(a); // 打印出: (3) ["小李", "小红", "小明"] ``` #####方法10:map()方法对数组的每一个元素运行给定的函数,返回函数调用的结果组成的数组 ``` var arr = [1, 4, 9, 16]; var a = arr.map(x => x * 2); //对数组的每项*2 console.log(a); //打印出:  [2, 8, 18, 32] ``` #####方法11: every和some方法(ES5): 1,every是所有函数的每个回调都返回true的时候才会返回true,当遇到false的时候终止执行,返回false。类似于: 且 && 2,some函数是存在有一个函数返回true的时候终止执行并返回true,否则返回false。类似于: 或 || ``` // every var arr = [1,6,8,-2,-5,7,-4] var isPositive = arr.every(function(value){ return value > 0; }) console.log(isPositive) // false //some var arr = [1,6,8,-2,-5,7,-4] var isPositive = arr.some(function(value){ return value > 0; }) console.log(isPositive) // true ``` #####方法12:filter(function(element))方法 (ES5) 返回数组的子集,子集的元素是回调函数中返回true的元素。其实就是filter筛选、过滤的意思 ``` var arr = [1,6,8,-2,-5,7,-4] var positiverArr = arr.filter(function(value){ return value > 0 }) console.log(positiverArr); // 打印出:[1, 6, 8, 7] console.log(arr); // 打印出:[1, 6, 8, -2, -5, 7, -4] ```

评论

  1. #1

    Life 2021-11-29 21:09:05
    支持