Array知识点

阮一峰老师

链接:http://javascript.ruanyifeng.com/stdlib/array.html#toc0

 

1.push——用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组的长度。该方法改变原数组。

2.pop——删除数组的最后一个元素,并返回删除的元素。该方法改变原数组。

3.join——以参数作为分隔符,把数组连接成字符串,默认用“,”分隔。不会改变原数组。

Array.prototype.join.call('hello', '-')
// "h-e-l-l-o"

4.concat——用于将新数组添加到原数组末尾,并返回一个新数组,不会改变原数组。

  只要原数组的成员中包含对象,concat方法不管有没有参数,总是返回该对象的引用。(浅复制)

5.shift——删除数组的第一个元素,并返回该元素。该方法改变原数组。

var a = ['a', 'b', 'c'];

console.log(a.shift()); // 'a'
console.log(a); // ['b', 'c']

pushshift结合使用,就构成了“先进先出”的队列结构(queue)

6.unshift——在数组的第一个位置添加元素,该方法会改变原数组。

7.reverse——颠倒数组中的元素。该方法会改变原数组。

8.slice——提取原数组的一部分。不改变原数组。

  slice可用于将类似数组的对象(arguments,标签集)转换为正真的数组

Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 })
// ['a', 'b']

Array.prototype.slice.call(document.querySelectorAll("div"));
Array.prototype.slice.call(arguments);

9.splice——删除原数组的部分成员,并可以添加新的元素成员。返回被删除的元素。该方法会改变原数组。

var a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2, 1, 2) // ["e", "f"]
a // ["a", "b", "c", "d", 1, 2]

10.sort——对数组元素进行排序,默认按照字典顺序排序(数值会被转成字符串,然后再按照字典顺序),不是按照大小排序。该方法会改变原数组。

[10111, 1101, 111].sort()
// [10111, 1101, 111]

11.map——对数组的所有成员调用一个函数,根据函数结果返回一个新数组。不会改变原数组。

var numbers = [1, 2, 3];

numbers.map(function (n) {
  return n + 1;
});
// [2, 3, 4]

numbers
// [1, 2, 3]
[1, 2, 3].map(function(elem, index, arr) {//elem当前成员,index当前位置,arr数组本身
  return elem * index;
});
// [0, 2, 6]

可通过[].map.call('abc', upper)用于对字符串操作map,或者现将字符串转换为数组,再使用'abc'.split('').map(upper)

12.split——用于把一个字符串分割成字符串数组。

13.forEach——forEach方法与map方法很相似,也是遍历数组的所有成员,执行某种操作,但是forEach方法一般不返回值,只用来操作数据。如果需要有返回值,一般使用map方法。

  forEach方法也可以接受第二个参数,用来绑定回调函数的this关键字。

var out = [];

[1, 2, 3].forEach(function(elem) {
  this.push(elem * elem);
}, out);//out为第二个参数,用来绑定回调函数的关键字this

out // [1, 4, 9]

14.filter——filter方法的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。

15.reduce——从左到右处理

[1, 2, 3, 4, 5].reduce(function(x, y){
  console.log(x, y)
  return x + y;
});
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15

16.some,every——用于判断

var arr = [1, 2, 3, 4, 5];
arr.some(function (elem, index, arr) {
  return elem >= 3;
});
// true
var arr = [1, 2, 3, 4, 5];
arr.every(function (elem, index, arr) {
  return elem >= 3;
});
// false

17.indexOf(),lastIndexOf()——元素在数组中第一次/最后一次出现的位置

18.find() 方法返回值是第一个通过测试(函数内判断)的数组的该成员,之后的值不会再调用执行函数,如果没有符合条件的元素返回undefined。

 

var ages = [3, 10, 18, 20];
 
function checkAdult(age) {
    return age >= 18;
}
 
function myFunction() {
    document.getElementById("demo").innerHTML =     
   ages.find(checkAdult);
}      //18

 

19.findIndex() 方法返回值是第一个通过测试(函数内判断)的数组的该成员的位置,之后的值不会再调用执行函数,如果没有符合条件的元素返回-1。

 

posted on 2017-06-13 11:41  我爱吃豌豆  阅读(243)  评论(0编辑  收藏  举报

导航