JS Array数组的方法(大全)实例详解

本文详细介绍了JavaScript数组的各种方法,包括`flat()`、`concat()`、`copyWithin()`等,涵盖了从ES3到ES6及后续版本的特性。通过实例展示了如何使用这些方法进行数组操作,如合并、复制、过滤、查找、排序等。
摘要由CSDN通过智能技术生成

参考:https://github.com/freeshineit/javascript-array

Array.prototype.flat()new

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

语法:

var newArray = arr.flat([depth])

实例:

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,可展开任意深度的嵌套数组
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

//方法会移除数组中的空项:
var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]

代替方案:

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

// 展开一层数组
arr.flat();
// 等效于
arr.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]

// 使用扩展运算符 ...
const flattened = arr => [].concat(...arr);

Array.prototype.concat() [ES3]

(concat()方法合并两个或两个以上数组。此方法不更改现有数组,而是返回新数组)

语法:

var new_array = old_array.concat(value1[,value2[, …[,valueN]]])

实例:


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

var arr2=['d','e','f'];

var arr3=arr1.concat(arr2);

// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]

Array.prototype.copyWithin() [ES6]

(copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。target(必需):从该位置开始替换数据。start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。)

( copyWithin()方法是数组的浅拷贝部分, 而数组的大小没有改变。)

语法:

arr.copyWithin(target)

arr.copyWithin(target,start)

arr.copyWithin(target,start,end)

实例:


['alpha','bravo','charlie','delta'].copyWithin(2,0);

// results in ["alpha", "bravo", "alpha", "bravo"]

Array.prototype.entries() [ES6]

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

语法:

a.entries()

实例:


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

var iterator = a.entries();

console.log(iterator.next().value);  // [0, 'a']

console.log(iterator.next().value);  // [1, 'b']

console.log(iterator.next().value);  // [2, 'c']



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

var iterator = a.entries();

for(lete of iterator){
   

    console.log(e);

}// [0, 'a']// [1, 'b']// [2, 'c']

Array.prototype.every() [ES5]

(every方法是数组的逻辑判定:对数组元素应用指定对函数进行判定,返回true 或 false)

语法:

arr.every(callback[,thisArg])

实例:


functionisBigEnough(element,index,array){
   

       return element >= 10;

}

[12,5,8,130,44].every(isBigEnough);// false

[12,54,18,130,44].every(isBigEnough);// true

[1,2,3,4,5,6,7,8].every(function(x){
    x < 10; } ) //true 所有值<10

Array.prototype.fill() [ES6]

(fill()方法填充数组中的所有从一开始指数结束指标与静态值的元素)

语法:

arr.fill(value)

arr.fill(value,start = 0)

arr.fill(value,start = 0,end = this.length)

(value 值是必须的;start 开始位置 ,可选、默认值为;end结束位置,可选、默认值为数组的length)

实例:


varnumbers=[1,2,3]

numbers.fill(1);



[1,2,3].fill(4);// [4, 4, 4]

[1,2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值