JS笔记 数组篇

理解length

和其他语言一样,js的数组索引是从0开始的,但是我在文档上看到一些我看到的有意思的操纵
写一个小于数组元素数量的值会缩短数组,写0会彻底清空数组
	var arr = ['a','b','c'];
	console.log(arr.length); //输出3
	对arr的length属性赋值
	arr.length = 2;
	console.log(arr) // 可以发现输出的数组中只有a和b
	arr.length = 0;
	console.log(arr); //arr被清空
	再次赋值为3
	arr.length = 3;
	console.log(arr) //arr为长度为三的空数组

数组方法

在末尾添加和删除的方法 push(),pop()
凡添加都是返回长度,删除则返回该元素
在开头添加和删除的方法 unshift(),shift()

截取数组片段slice()注意点截取数组时包括beginIndex,不包括endIndex
移除元素方法splice和slice只有一个p的差别,不同的是splice只移除元素,也可替换数组元素,但不把结果返回,
var myArray = new Array (“1”, “2”, “3”, “4”, “5”);
myArray.splice(1, 3, “a”, “b”, “c”, “d”);
// myArray is now [“1”, “a”, “b”, “c”, “d”, “5”]

颠倒数组reverse

foreach和map都可遍历数组,但map把结果返回,且在回调函数可操作数组

	var a = ['a', 'b', 'c'];
	a.forEach(function(element) { console.log(element);} );//返回每一个元素
	var a1 = ['a', 'b', 'c'];
	var a2 = a1.map(function(item) { return item.toUpperCase(); });
	console.log(a2); // ['A','B','C']
	var a3 = a2.map(eachToLowerCase);
	function eachToLowerCase(item) {
		return item.toLowerCase();
	}
	console.log(a3);

filter 返回一个包含所有在回调函数上返回为true的元素的新数组

	var a1 = ['a', 10, 'b', 20, 'c', 30];
	var a2 = a1.filter((item) => typeof item == 'number');
	console.log(a2); // logs 10,20,30
	

every 与filter相同但是返回的是布尔值

	var a1 = [1,2,3];
	console.log(a1.every(function(item){ return typeof item == 'number'}));//true
	var a2 = [1,'2',3];
	console.log(a2.every(function(item){ return typeof item == 'number'}));//false

some 和every一样也是返回布尔值,从名字就可以看出来,some只需有一项符合条件,就可返回真

reduce 利用callback进行求和 ,reduceRight则是从数组右边开始

	var a = [10, 20, 30];
	var total = a.reduce(function(first, second) { return first + second; }, 0);
	console.log(total) // Prints 60
	var a2 = [10, 20, 30];
	var total = a2.reduce(function(first, second) { return first + second; }, 10);
	console.log(total) // Prints 70

类数组对象

类数组对象不是由Array构造函数所创建,但是可以应用数组的操作方法,注意是应用不是调用
	var obj = {0:'张三',1:'里斯',2:'王五',length:3};
	console.log(Array.prototype.slice.call(obj)); // ['张三','里斯','王五']
	用Array.from也可将类数组对象转化为数组
	在浏览器环境中,document.getElementsByTagName()语句返回的就是一个类数组对象

数组推导式

在 ECMAScript 7, array comprehensions 被规范化并提供一个有用的快捷方式,用来实现如何在另一个数组的基础上构造一个新的数组。推导式可以经常被用在那些需要调用 map() 和 filter()函数的地方,或作为一种结合这两种方式。
	var num = [1,2,3];
	var num2 = [for(i of num) i*2];
	console.log(num2); //[2,4,6]
	等价于map操作
	var num3 = num.map((i) => i*2);//num3[2,4,6]

数组去重

利用Array的set可以达到数组去重的效果
	var arr = [1,1,2,3,4,4,5,5,6,6];
	var arr2 = [...new Set(arr)]; //...表示展开操作符
	console.log(arr2); //输出[1,2,3,4,5,6]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值