数组的常用方法

2019-09-16  本文已影响0人  程序员是粉色的

1.Array.from() 方法从一个类似数组或可迭代对象中创建一个新的,浅拷贝的数组实例。

var arr = [1,2,3,4,5,6];
var name='shuang'
var newArr='';
console.log(Array.from(name)); //[ "s", "h", "u", "a", "n", "g"]

2.结合new Set 实现数组去重

function combine(){ 
       let arr = [].concat.apply([], arguments);  //没有去重复的新数组 
       return Array.from(new Set(arr));
      //Set和数组类似,唯一不同在于该类型不会有重复的数据
} 
            
var m = [1, 2, 2];
console.log(combine(m));  //[1, 2]

3.Array.isArray() 用于确定传递的值是否是一个 Array。
如果对象是 Array,则为true; 否则为false。

var arr=[1,2,3,4];
var obj = {foo:123};
console.log(Array.isArray(arr)) //true
console.log(Array.isArray(obj)) //false

4.Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

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

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

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

var arr1 = [1,2,3];
var arr2 = ['4','5','6'];
console.log(arr1.concat(arr2)) //[1, 2, 3, "4", "5", "6"]

6.every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

var arr=[1,2,3,4,5];
var num = arr.every((item)=>{
    return item < 6;
})
console.log(num) //true

7.fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
fill 方法接受三个参数 value, start 以及 end. start 和 end 参数是可选的, 其默认值分别为 0 和 this 对象的 length 属性值。

var arr=[0,1,2,3,4,5];
console.log(arr.fill(99,1,2)) //[0, 99, 2, 3, 4, 5]
console.log(arr.fill(999)) // [999, 999, 999, 999, 999, 999]

8.filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

var arr=[1,2,3,4,5,6];

var result =  arr.filter((item) =>{
    return item > 3
});
console.log(result) //[4, 5, 6]

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

var arr=[1,2,8,4,5,6];

var result =  arr.find((item) =>{
    return item > 5
});
console.log(result) //8

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

var arr=[1,2,8,4,5,6];
var result =  arr.findIndex((item) =>{
    return item > 5
});
console.log(result) //2

11.flat()方法会按照一个可指定的深度递归遍历数组,并讲所有的元素与遍历到的子数组中的元素合并一个新数组返回。

var arr1 = [1, 2, [3, 4]];
arr1.flat(); 
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 Infinity 作为深度,展开任意深度的嵌套数组
arr3.flat(Infinity); 
// [1, 2, 3, 4, 5, 6]
var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]   flat方法会移除数组中的空项:


var arr = [1,2,3,4];
var b = [6,7,8];
arr.push(b);// [1, 2, 3, 4, Array(3)]
console.log(arr.flat())  //[1, 2, 3, 4, 6, 7, 8]

12.flatMap()方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组,它与map和深度值1的flat几乎相同,但flatMap通常在合并成一种方法的效率稍高一些。

var arr1 = [1, 2, 3, 4];

arr1.map(x => [x * 2]); 
// [[2], [4], [6], [8]]

arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]

// 只会将 flatMap 中的函数返回的数组 “压平” 一层
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]

let arr = ["今天天气不错", "", "早上好"]

arr.map(s => s.split(""))
// [["今", "天", "天", "气", "不", "错"],[],["早", "上", "好"]]

arr.flatMap(s => s.split(''));
// ["今", "天", "天", "气", "不", "错", "早", "上", "好"]

13.forEach()方法对数组的每个元素执行一次提供的函数。

//for循环转换为forEach
const items = ['item1', 'item2', 'item3'];
const copy = [];

// before
for (let i=0; i<items.length; i++) {
  copy.push(items[i]);
}

// after
items.forEach(function(item){
  copy.push(item);
});

14.includes方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
对象数组不能使用includes方法来检测。

[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false
[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true

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

var arr=[1,2,8,4,5,6];
console.log(arr.indexOf(2));  //1
console.log(arr.indexOf(8,2));  //2
console.log(arr.indexOf(2,8));   //-1
console.log(arr.indexOf(2, -1));   // -1
console.log(arr.indexOf(6,-1));  //5
上一篇下一篇

猜你喜欢

热点阅读