黑马程序员技术交流社区

标题: [上海校区] ES6一些数组的新方法 [打印本页]

作者: 束玉杰    时间: 2019-12-6 09:25
标题: [上海校区] ES6一些数组的新方法
本帖最后由 束玉杰 于 2019-12-6 09:30 编辑

1.1 from,将一个数组或者类数组变成数组,会复制一份

[JavaScript] 纯文本查看 复制代码
let olfArr = [1,2,3]
let newArr = Array.from(olfArr);
console.log(newArr)
// [ 1, 2, 3 ]

1.2  Array.of,of是为了将一组数值,转换为数组

[JavaScript] 纯文本查看 复制代码
console.log(Array(3), Array(3).length); //[ <3 empty items> ] 3
console.log(Array.of(3), Array.of(3).length); // [ 3 ] 1

1.3 copyWithin,Array.prototype.copyWithin(target, start = 0, end = this.length) 覆盖目标的下标 开始的下标 结束的后一个的下标

[JavaScript] 纯文本查看 复制代码
let arr = [1, 2, 3, 4, 5].copyWithin(0, 1, 2)
console.log(arr)
// [ 2, 2, 3, 4, 5 ]

1.4 find,查到对应的元素和索引

[JavaScript] 纯文本查看 复制代码
let arr = [1, 2 ,3, 3, 4, 5];
let find = arr.find((item, index, arr) => {
    return item === 3;
});
let findIndex = arr.findIndex((item, index, arr) => {
    return item === 3;
});

console.log(find, findIndex);
// 3 2

1.5 fill,就是填充数组的意思 会更改原数组 Array.prototype.fill(value, start, end = this.length);

[JavaScript] 纯文本查看 复制代码
let arr = [1, 2, 3, 4, 5, 6];
arr.fill('a', 1, 2);
console.log(arr);
// [ 1, 'a', 3, 4, 5, 6 ]

1.6 map,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

[JavaScript] 纯文本查看 复制代码
const map = new Map([
    ['name', '张三'],
    ['title', 'Author']
]);

map.size // 2
map.has('name') // true
map.get('name') // "张三"
map.has('title') // true
map.get('title') // "Author"

1.7 reduce, Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

[JavaScript] 纯文本查看 复制代码
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

1.8 filter,

filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。

和map()类似,Array的filter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

回调函数
filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身
// 在一个Array中,删掉偶数,只保留奇数,可以这么写:

[JavaScript] 纯文本查看 复制代码
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
// 把一个Array中的空字符串删掉,可以这么写:
var arr = ['A', '', 'B', null, undefined, 'C', '  '];
var r = arr.filter(function (s) {
    return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
});
r; // ['A', 'B', 'C']

// 回调函数
var arr = ['A', 'B', 'C'];
var r = arr.filter(function (element, index, self) {
    console.log(element); // 依次打印'A', 'B', 'C'
    console.log(index); // 依次打印0, 1, 2
    console.log(self); // self就是变量arr
    return true;
});

1.9 forEach,

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

语法:array.forEach(function(currentValue, index, arr), thisValue)

[JavaScript] 纯文本查看 复制代码
var arr = [1,2,3,4,5];
arr.forEach(function(e) {
    console.log(e)
})
/*
1
2
3
4
5
*/


原文链接:https://blog.csdn.net/yrx6394610/article/details/86506995




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2