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);
image.png
方法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);//原字符串不变
image.png
方法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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351