Array的常用方法

JavaScript数组方法精讲
1.Array.of()

创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

Array.of() 和 Array 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个包含 7 个 undefined 元素的数组。

  Array.of(7);       // [7] 
  Array.of(1, 2, 3); // [1, 2, 3]

  Array(7);          // [ , , , , , , ]
  Array(1, 2, 3);    // [1, 2, 3]

2.Array.from()

从一个类似数组或可迭代的对象中创建一个新的数组实例。

  var bar = ["a", "b", "c"];
  Array.from(bar);
  // ["a", "b", "c"]

  Array.from('foo');
  // ["f", "o", "o"]

3.concat()

用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

function unique3(array) {
    var res = [],
        seen,
        sortedArray = array.concat().sort();

    for(var i = 0, len = sortedArray.length; i < len; i += 1) {
        if(!i || seen !== sortedArray[i]){
            res.push(sortedArray[i]);
        }
        seen = sortedArray[i];
    }
    return res;
}

4.every()

测试数组的所有元素是否都通过了指定函数的测试


5.filter()

创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

function unique(array){
    var res = array.filter(function(item ,index, array){
        return array.indexOf(item) === index;
    })
    return res;
}

计算重复字符个数

function duplicateCount(text){
    return text.toLowerCase().split('').filter(function(val, i, arr){
        return arr.indexOf(val) !== i && arr.lastIndexOf(val) === i;
    }).length;
}

6.find()

返回数组中满足提供的测试函数的(第一个元素)的值,否则返回 undefined。


7.forEach()

对数组的每个元素执行一次提供的函数。


8.includes()

用来判断一个数组是否包含一个指定的值,如果是,返回 true或 false

  arr.includes(searchElement)
  arr.includes(searchElement, fromIndex)

9.indexOf()

返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

function unique(array) {
    var res = [];
    for(var i = 0, len = array.length; i < len; i += 1){
        if(res.indexOf(array[i]) === -1) {
            res.push(array[i]);
        }
    }
    return res;
}

lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。

计算重复字符个数

function duplicateCount(text){
    return text.toLowerCase().split('').filter(function(val, i, arr){
        return arr.indexOf(val) !== i && arr.lastIndexOf(val) === i;
    }).length;
}
10.join()

将数组(或一个类数组对象)的所有元素连接到一个字符串中(不会改变原数组)


11.keys()

返回一个新的Array迭代器,它包含数组中每个索引的键

  let arr = ["a", "b", "c"];
   let iterator = arr.keys();

   console.log(iterator.next()); 
   // Object {value: 0, done: false}

   console.log(iterator.next()); 
   // Object {value: 1, done: false}

   console.log(iterator.next()); 
   // Object {value: 2, done: false}

   console.log(iterator.next()); 
   // Object {value: undefined, done: true}

12.map()

创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
生成新数组元素的函数,使用三个参数:currentValue,index,array
栗子:
提供一个字符串,返回如下形式:
“abcd” –> “A-Bb-Ccc-Dddd”
“RqaEzty”–> “R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy”

function accum(s) {
    return s.split('').map(function(c, i){
        return c.toUpperCase() + c.toLowerCase().repeat(i);
    }).join('-');
}

13.pop()

删除并返回数组的最后一个元素。此方法更改数组的长度。


14.push()

将一个或多个元素添加到数组的末尾,并返回数组的新长度!


15.reduce()

对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。

将二维数组转化为一维
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
    function(a, b) {
        return a.concat(b);
    });

16.shift()

删除并返回数组第一个元素,此方法更改数组的长度


17.unshift()

将一个或多个元素添加到数组的开头,并返回新数组的长度


18.slice()

返回一个从开始结束不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,(不会改变原数组)

    var arr = [1, 2, 4, 5, 8]
    var tem = arr.slice(1, 3);//[2, 4]

19.some()

测试数组中的某些元素是否通过由提供的函数实现的测试


20.sort()

在适当的位置对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。


21.splice()

向/从数组中添加/删除项目,然后返回被删除的项目。(改变原数组)

array.splice(start)
array.splice(start, deleteCount) 
array.splice(start, deleteCount, item1, item2, ...)
var arr = ['a', 'b', 'c', 'd', 'e'];
arr.splice(2);   //arr变为['a', 'b']
arr.splice(2, 0, 'c', 'd', 'e');  //arr变为['a', 'b', 'c', 'd', 'e']
arr.splice(2, 4, 'f', 'g');  //arr变为['a', 'b', 'f', 'g']

22.toString()

把数组转换为字符串,并返回结果。

 var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
 var myVar = monthNames.toString(); // "Jan,Feb,Mar,Apr" 
23.reverse()

颠倒数组中元素的位置,并返回该数组的引用

function descendingOrder(n){
  return Number(String(n).split('').sort().reverse().join(''))
}

function descendingOrder(n){
  return +(String(n).split('').sort().reverse().join(''))
}

附: 一道有意思的与toString()方法有关的题

    3.toString(); //error
    3..toString();// "3"
    3...toString();//error
    .3.toString();//"3"
    var a = 4;
    a.toString();//"4"
在js中3, 3., .3, 3.3都是合法数字,所以在解析3.toString()的时候,这个"."会当做和3一起的数字来解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值