Js数组的基本方法2

     本文主要介绍的方法主要有以下几个,这几个方法都不会改变原来的数组。

  • Array.prototype.concat()
  • Array.prototype.join()
  • Array.prototype.slice()
  • Array.prototype.toString()
  • Array.prototype.indexOf()
  • Array.prototype.lastIndexOf()

1、Array.prototype.concat()

     concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,返回一个新的数组。该数组是通过把所有的arrayX参数添加到arryaObject中生成的,如果要进行concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。

     语法:var newArray = oldArray.concat([element1, element2, element3, ..., elementN]);

     说明:

  •  concat()函数并不会改变原来数组中的元素,但是会返回一个新的数组。
  • 对于数组中含有对象引用,concat()函数只是进行浅复制(shallow copy),即新数组和原来数组都是指向同一个对象。也就是说,一旦指向的对象被修改,则原来数组和新数组中相应的元素都会发生变化。
  • 对于字符串和数值则是直接复制到新数组中。

例子:

    var arr1 = ['a', 'b', 'c'], arr2 = [1, 2, 3];
    var newArr1 = arr1.concat(arr2);
    console.log(newArr1);    //result: ['a', 'b', 'c', 1, 2, 3]

    var num1 = [1, 2, 3], num2 = [4, 5, 6], num3 = [7, 8, 9];
    var nums = num1.concat(num2, num3);
    console.log(nums);            //result: [1, 2, 3, 4, 5, 6, 7, 8, 9]

    //指向对象引用
    var obj = {name: "Louis", age: 23};
    var objArr = [obj];
    var newArr = objArr.concat();
    console.log(objArr[0].age);   //result: 23
    console.log(newArr[0].age);   //result: 23

    obj.age = 24;
    console.log(objArr[0].age);   //result: 24
    console.log(newArr[0].age);   //result: 24
2、Array.prototype.join()
     join()方法用于把数组中的所有元素方法如一个字符串,元素之间是通过指定的分隔符进行分隔的。

    语法:array.join([delimiter]),delimiter是可选的,在返回字符串中用于分割字符串的字符。如果省略,将使用空字符("")。如果delimiter是零长度字符串,则在同一列表中列出全部项,没有分界符。

    返回:返回一个字符串。

例子:

    var a = ['Wind', 'Rain', 'Fire'];
    var myVar1 = a.join();      // print: 'Wind,Rain,Fire' 
    console.log(myVar1);
    var myVar2 = a.join(' , ');  // print: 'Wind, Rain, Fire'
    console.log(myVar2);
    var myVar3 = a.join(' + '); // print: 'Wind + Rain + Fire'
    console.log(myVar3);
    var myVar4 = a.join('');    // print: 'WindRainFire' 
    console.log(myVar4);
3、Array.prototype.slice()

     slice()方法返回一个新的数组,新的数组是原来数组的部分浅复制(shadlow copy)。
     语法:array.slice(startIndex[,endIndex])

               startIndex: 当没有传入该参数则默认为0;如果传入的是负数,则加上数组长度;
               endIndex: 当没有传入该参数则默认是数组的长度(arr.length);如果传入的是负数,则加上数组的长度。

     说明:需要注意的是截取的数组中不包括endIndex位置处的元素,即从startIndex到endIndex-1。对于对象引用,跟Array.prototype.concat()函数一样。

例子:

    var color = ['red', 'green', 'black', 'pink', 'blue'];
    var subColor = color.slice(1, 3);      // print:['green', 'black']
    console.log(subColor);
4、Array.prototype.toString()

     toString()方法将数组组成一个字符串,并返回字符串。

     语法:array.toString()

     说明:与array.join()方法得到的字符串一样。

例子:

    var a = ['Wind', 'Rain', 'Fire'];
    var myVar1 = a.toString();      // print: 'Wind,Rain,Fire'
    console.log(myVar1);

    var myVar2 = a.join();      // print: 'Wind,Rain,Fire'
    console.log(myVar2);
5、Array.prototype.indexOf()
     该方法从数组(由前往后,即从0到arr.length-1顺序)找查找某个元素,如果能找到则返回第一个相同元素在数组中的位置;如果

没能找到则返回-1。

     语法:arr.indexOf(searchElement[, fromIndex = 0]) 

               searchElement: 要在数组中查找的元素;

               fromIndex: 从某个位置开始查找,如果没有该参数则默认为0;如果fromIndex大于或者等于数组的长度,则直接返

回-1;如果fromIndex小于0,则加上数组的长度,从结果值的位置开始查找,如果结果值还是小于0,则是整个数组查找。

例子:

    var array = [2, 5, 9];
    console.log(array.indexOf(2));// 0
    console.log(array.indexOf(7));// -1
    console.log(array.indexOf(9, 2));// 2
    console.log(array.indexOf(9, 3));// -1
    console.log(array.indexOf(2, -1));// -1
    console.log(array.indexOf(2, -3));// 0


    //找到数组中某个元素的所有位置
    var array = ['a', 'b', 'a', 'c', 'a', 'd'];
    var searchElement = 'a';

    var indexArr = [];
    var index = array.indexOf(searchElement);
    while(index != -1){
        indexArr.push(index);
        index = array.indexOf(searchElement, index + 1);
    }
    console.log(indexArr);
6、Array.prototype.lastIndexOf()

     从数组中查找指定的元素,如果存在则返回该元素第一次出现在数组中的位置,否则返回-1。需要注意的是查找的方向是从数组

尾部往前,即arr.length到0。

     语法:arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])

               searchElement: 要查找的值

               fromIndex: 如果没有传入该参数则默认为arr.length数组长度;如果传入的数值大于或等于数组的长度,则对整个数组都进行查找;如果传入的是负数,则加上数组的长度,从结果值处开始查找,如果结果值还是负数则直接返回-1;需要注意的是对于有传入fromIndex,是从fromIndex处开始往前查找。

例子:

    var array = [2, 5, 9, 2];
    console.log(array.lastIndexOf(2));     // 3
    console.log(array.lastIndexOf(7));     // -1
    console.log(array.lastIndexOf(2, 3));  // 3
    console.log(array.lastIndexOf(2, 2));  // 0 注意结果不是 3
    console.log(array.lastIndexOf(2, -2)); // 0
    console.log(array.lastIndexOf(2, -1)); // 3


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值