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一起的数字来解析