欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6新增API(Array.from()、Array.of()、 find( )、fill( ))

程序员文章站 2024-02-14 17:32:04
...

API一直是我们操作数组和对象最好用也是最便捷的方法,而在ES6中新增的不止有关键字,还有操作数组与对象的API。

Array.from()

将类数组对象或可迭代对象转化为数组。参数是一个数组,返回值也是一个数组。

console.log(Array.from([1,2,3]));  //打印值为   [1,2,3]
//也可以含空位
console.log(Array.from([1,2,,3]));  //打印值为   [1,2,undefind,3]

也可以将JOSN数组格式的数据转换成数组

let people={
    0:'zhangsan', 
    '1':24,     //key值必须是0,1,2......可以是数字或者字符串
    length:2    //必须有length这个特殊的属性
};
let trans=Array.from(people);//Array.from()方法
console.log(trans); //['zhangsan',24]

这就是一个标准的JSON数组格式,跟普通的JSON对比是key值是数组下标并且在最后多了一个length属性。只要是这种特殊的json格式都可以轻松使用ES6的语法转变成数组。在ES6中绝大部分的Array操作都存在于Array对象里。我们就用Array.from(xxx)来进行转换。

// 没有 length 属性,则返回空数组
let array = Array.from({
  0: '1',
  1: '2',
  2: 3,
});
console.log(array); // []

如果没有length属性,该方法返回一个空数组。

// 元素属性名不为数值且无法转换为数值,返回长度为 length 元素值为 undefined 的数组  
let array1 = Array.from({
  a: 1,
  b: 2,
  length: 2
});
console.log(array1); // [undefined, undefined]

如果属性的名字不是数字类型的或可以转换成数字类型的字符串,则会返回长度为length,值为undefind的数组。

Array.of()

将参数中所有值作为元素转换成数组。参数可以是同类型的数据,也可以是不同类型的数据,其返回值是一个数组

console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]

参数的数据类型可以不是同一种类型。

console.log(Array.of(1, '2', true)); // [1, '2', true]

参数为空时返回一个空数组。

console.log(Array.of()); // []

find( )

find()是一个实例方法,所谓的实例方法就是并不是以Array对象开始的,而是必须有一个已经存在的数组,然后使用的方法,这就是实例方法(不理解请看下边的代码)。这里的find方法是从数组中查找。在find方法中我们需要传入一个匿名函数,函数需要传入三个参数
value:表示当前查找的值。
index:表示当前查找的数组索引。
arr:表示当前数组。

let arr=[1,2,3,4,5,6,7,8,9];
console.log(arr.find(function(value,index,arr){
    return value > 5;
})) //输出6  注意:在函数中如果找到符合条件的数组元素就return,并停止查找

fill( )

fill()也是一个实例方法,它的作用是把数组进行填充,它接收三个参数第一个参数是填充的变量第二个是开始填充的位置第三个是填充到的位置

	let arr=[0,1,2,3,4,5,6,7,8,9];
	arr.fill('javascript',2,4);
	console.log(arr);//[0, 1, "javascript", "javascript", 4, 5, 6, 7, 8, 9]

如果第二个参数不写的话就从头开始填充,如果第二个参数不写就一直填充到数组最大长度。

//fill(data)   用指定的数据填充代码
	const arr = new Array(10);
	arr.fill("las")
 	console.log(arr);//["las","las","las","las","las","las","las","las","las","las"]