#JavaScript#数组

#1.Array.of() 返回由所有参数组成的数组,不考虑参数的数量或类型,如果没有参数就返回一个空数组 (ES6新增)

#2.Array.from()从一个类数组或可迭代对象中创建一个新的数组 (ES6新增)

1.数组合并去重

//数组合并去重
function combine(){
    let arr = [].concat.apply([], arguments);  //没有去重复的新数组,之后用Set数据结构的特性来去重
    return Array.from(new Set(arr));
}

var m = [1, 3, 3], n = [2,3,4];
console.log(combine(m,n));

会改变原数组的1方法

1. push() 方法在数组的尾部添加一个或多个元素,并返回数组的长度

2. pop() 方法删除数组的最后一个元素,减小数组长度并返回它删除的值

3. unshift() 方法在数组的头部添加一个或多个元素,并将已存在的元素移动到更高索引的位置来获得足够的空间,最后返回数组新的长度

4. shift() 方法删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置来填补数组头部的空缺,返回值是删除的元素

5. splice() 方法是在数组中插入或删除元素的通用方法

6. sort() 方法将数组中的元素排序并返回排序后的数组

7. reverse() 方法将数组中的元素颠倒顺序,返回逆序的数组。

8. copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。 (ES6新增)

9.fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。 (ES6新增)

不改变原数组的方法

1. slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。

2. join() 方法将数组(或一个类数组对象)中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。

3. toString() 方法将数组的每个元素转化为字符串(如有必要将调用元素的toString()方法)并且输出用逗号分割的字符串列表。返回一个字符串表示数组中的元素

4. toLocaleString() 数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。

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

6. isArray() 用于确定传递的值是否是一个 Array

数组遍历、映射、过滤、检测、简化等方法

1. forEach() 方法从头到尾遍历数组,为每个元素调用指定的函数。

语法: array.forEach(function(item){}), 参数item表示数组每一项的元素

注意:

  1. forEach无法中途退出循环,只能用return退出本次回调,进行下一次回调,如果要提前终止,可以把forEach方法放在try块中,并能抛出一个异常,但这种方法是不推荐的。
  2. 它与之后会说到的几个方法不同,总是返回 undefined值,即使你return了一个值。

2. map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个callback函数后返回的结果。

3. filter() 方法返回的数组元素是调用的数组的一个子集。传入的函数时用来逻辑判定的,该函数返回 true 或 false,如果返回值为true或能转化为true的值,那么传递给判断函数的元素就是这个子集的成员,它将被添加倒一个作为返回值的数组中。

4. every() 方法测试数组的所有元素是否都通过了指定函数的测试。当且仅当针对数组中的所有元素调用判定函数都返回true,它才返回true

5. some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。当数组中至少有一个元素调用判定函数返回true,它就返回true,当且仅当数组中的所有元素调用判定函数都返回false,它才返回false

6. reduce() 和 reduceRight() 这两个方法使用指定的函数将数组元素进行组合,生成单个值。这在函数式编程中是常见的操作,也可以称为“注入”和“折叠”。reduceRight() 和 reduce() 工作原理是一样的,不同的是reduceRight() 按照数组索引从高到低(从右到左)处理数组,而不是从低到高。

7. indexof() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

8. lastIndexOf() 跟indexOf()查找方向相反,方法返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始

9. includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。 ES7新增

10. find() 和 findIndex() find 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。findIndex 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。(ES6新增)

11. keys() 方法返回一个新的Array迭代器,它包含数组中每个索引的键。 (ES6新增)

12. values() 方法返回一个新的Array迭代器,它包含数组中每个索引的值。 (ES6新增)

13. @@iterator 属性和 values() 属性的初始值均为同一个函数对象。数组的 iterator 方法,默认情况下与 values() 返回值相同,调用语法是 arr[Symbol.iterator]() (ES6新增)

14. entries() 方法返回一个新的Array迭代器,该对象包含数组中每个索引的键/值对。 (ES6新增)

  • for in , $.each , $().each 既支持对象也支持数组遍历;
  • for , do/while , forEach 只支持数组;
  • Array.prototype.map, Array.prototype.every 只支持数组和形似数组的对象;
  • forEach不能退出循环,只能通过return来进入到下一个元素的遍历中(相当于for循环的continue), 且在IE没有实现该方法;
  • $.each和$().each循环只能通过return false 来退出循环, 使用return 或 return true 将跳过一个元素, 继续执行后面的循环.

参考:http://louiszhai.github.io/2015/12/18/traverse/

猜你喜欢

转载自blog.csdn.net/G_wendy/article/details/81510876
今日推荐