当前位置: 代码网 > it编程>编程语言>Javascript > ES6基础语法之数组拓展

ES6基础语法之数组拓展

2024年05月18日 Javascript 我要评论
一、array.of()将参数中所有值作为元素形成数组:console.log(array.of(1, 2, 3, 4)); // [1, 2, 3, 4]参数的值可以为不同的类型:console.l

一、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()); // []

注意:

let arr1 = new array(10); //是一个长度为10的空数组
let arr2 = array.of(10); //长度为1,第一个元素值为10的数组

二、array.from()

参数为数组,返回与原数组一样的数组:

console.log(array.from([1, 2])); // [1, 2]

参数含空位:

console.log(array.from([1, , 3])); // [1, undefined, 3]

对数组元素进行处理,形成新的数组:

let arr = array.from([1,2,3],n=>n*2);
console.log(arr); //[2,4,6]

利用函数处理数组,形成新的数组(奇数+1,偶数不变的规则):

//方案一:
let arr1 = [1,2,3,4,5,6];
let arr2 = array.from(arr1,function(n){
	if(n%2==1)
		return n+1;
	else
		return n;
});
console.log(arr2);

//方案二:
function f(n)
{
	if(n%2==1)
		return n+1;
	else
		return n;				
}
let arr1 = [1,2,3,4,5,6];
let arr2 = array.from(arr1,function(n){
	return f(n);
});
console.log(arr2);

三、类数组对象转换

将类似数组的对象转换成真正的数组:

let arr = array.from({
  0: "jack",
  1: "rose",
  2: "jordan",
  length: 3
});
console.log(arr); // ["jack", "rose", "jordan"]

没有 length 属性,则返回空数组:

let arr = array.from({
  0: "jack",
  1: "rose",
  2: "jordan",
});
console.log(arr); // []

元素属性名不为数值且无法转换为数值,返回长度为length元素值为undefined的数组:

let arr = array.from({
	a: "jack",
	b: "rose",
	c: "jordan",
	length: 3
});
console.log(arr); // [undefined, undefined,undefined]

四、转换可迭代对象

转换map:

let map = new map();
map.set('23', '乔丹');
map.set('33', '皮蓬');
map.set('99', '罗德曼');
console.log(array.from(map)); //[['23','乔丹'],['33','皮蓬'],['99','罗德曼']]

转换set:

let set = new set();
set.add("乔丹");
set.add("皮蓬");
set.add("罗德曼");
console.log(array.from(set)); //["乔丹","皮蓬","罗德曼"]

转换字符串:

let str = "hello!";
console.log(array.from(str)); //['h','e','l','l','o','!']

五、扩展运算符...

复制数组内容:

//方案一:复制数组内容
// let arr1 = [1,2,3,4];
// let arr2 = [...arr1];
// console.log(arr2);
// console.log(arr1 === arr2); //false(arr1和arr2引用不同,只是值相同)

//方案二:直接数组名赋值
// let arr1 = [1,2,3,4];
// let arr2 = arr1;
// console.log(arr2);
// console.log(arr1 === arr2); //true(arr1和arr2的引用相同)

合并数组:

let arr1 = [1,2,3,4];
let arr2 = [1,2,3,4];
let arr = [...arr1,...arr2];
console.log(arr);

作为函数参数(可以接受可变长度的参数):

function add(...items)
{
	let sum = 0;
	for(let item of items)
	{
		sum += item;
	}
	return sum;
}
let result1 = add(1,2,3);
let result2 = add(1,3,5,7,9);
console.log(result1);
console.log(result2);

六、扩展方法

查找:

//查找find()和findindex()
//find():查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。
// let arr = ["乔丹","皮蓬","罗德曼"];
// let r = arr.find(item=>item == "皮蓬");
// console.log(r);   //皮蓬

// let arr = ["乔丹","皮蓬","罗德曼"];
// let r = arr.find(item=>item == "姚明");
// console.log(r);   //undefined		

// let arr = [1,2,3,4];
// console.log(arr.find(item => item > 2)); // 3

//findindex():查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。
let arr = [10,20,30,40];
console.log(arr.findindex(item => item > 10)); // 1

填充:

//fill():将一定范围索引的数组元素内容填充为单个指定的值。
// 参数1:用来填充的值
// 参数2:被填充的起始索引
// 参数3(可选):被填充的结束索引,默认为数组末尾
// let arr = [1,2,3,4];
// arr.fill(0,1,2);
// console.log(arr);

//copywithin():将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。
// 参数1:被修改的起始索引
// 参数2:被用来覆盖的数据的起始索引
// 参数3(可选):被用来覆盖的数据的结束索引,默认为数组末尾
// let arr = [1,2,3,4];
// arr.copywithin(0,2,4);
// console.log(arr); // [3, 4, 3, 4]

// let arr = [1, 2, ,4];
// arr.copywithin(0, 2, 4);
// console.log(arr); // [, 4, , 4]

//第一个参数为负数表示倒数
// let arr = [1,2,3,4];
// arr.copywithin(-2,0);
// console.log(arr); // [1, 2, 1, 2]

包含:

//includes():数组是否包含指定值。
// 参数1:包含的指定值
// let arr = [1,2,3];
// let r = arr.includes(1);    // true
// console.log(r);

// 参数2:可选,搜索的起始索引,默认为0
let arr = [1,2,3];
let r = arr.includes(1, 1); // false
console.log(r);

嵌套数组转一维数组:

console.log([1 ,[2, 3]].flat()); // [1, 2, 3]

// 指定转换的嵌套层数
console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]

// 不管嵌套多少层
console.log([1, [2, [3, [4, 5]]]].flat(infinity)); // [1, 2, 3, 4, 5]

// 自动跳过空位
console.log([1, [2, , 3]].flat());<p> // [1, 2, 3]

到此这篇关于es6基础语法之数组拓展的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com