JS数组的一些原生方法

104 阅读3分钟

先记录一点


var testArr = [1, "a", new Date("21 Dec 1997 14:12:00 UTC")];
console.log("testArr:", testArr.toString());
//toString() 返回一个字符串,表示指定的数组及其元素:1,a,Sun Dec 21 1997 22:12:00 GMT+0800 (中国标准时间)
console.log("testArr:", testArr.toLocaleString("en", { timeZone: "UTC" })); //toLocaleString() 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串:1,a,12/21/1997, 2:12:00 PM
console.log("testArr:", testArr.join("--")); 
//join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符:1--a--Sun Dec 21 1997 22:12:00 GMT+0800 (中国标准时间)
testArr.pop();
//删除最后一个
console.log("testArr:", testArr); 
//[ 1, 'a' ]
testArr.push(new Date("21 Dec 1997 14:12:00 UTC"), 1); 
//push加一个或者多个
console.log("testArr:", testArr); 
//[ 1, 'a', 1997-12-21T14:12:00.000Z, 1 ]
testArr.shift(); //删除第一个
console.log("testArr:", testArr); //['a', 1997-12-21T14:12:00.000Z, 1 ]
testArr.unshift("第一个"); //向头部加一个
console.log("testArr:", testArr); //[ '第一个', 'a', 1997-12-21T14:12:00.000Z, 1 ]
testArr.reverse(); //排序颠倒
console.log("testArr:", testArr); //[ 1, 1997-12-21T14:12:00.000Z, 'a', '第一个' ]
var testArr2 = [1, 3, 2, 5, 0];
console.log(
	"testArr2:",
	testArr2.sort((a, b) => {
		return b - a;
	})
);
//sort() 方法用原地算法对数组的元素进行排序且影响原数组,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的:[ 5, 3, 2, 1, 0 ]
var concatArr = testArr2.concat(testArr);
//concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
console.log("concatArr:", concatArr);
//[ 5, 3, 2, 1, 0, 1, 1997-12-21T14:12:00.000Z, 'a', '第一个' ]
var sliceArr = concatArr.slice(0, 3);
//slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
console.log("sliceArr:", sliceArr); 
//[ 5, 3, 2 ]
sliceArr.splice(0, 2, "123"); 
//splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
console.log("sliceArr:", sliceArr); 
//[ 5, 3, 2 ]
console.log(sliceArr.indexOf("a"), sliceArr.indexOf(2));
//indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。:-1 1
console.log(sliceArr.every(val => val > 1));
//every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值:true
console.log(sliceArr.some(val => val > 33));
//some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。:true
var filterArr = sliceArr.filter(val => val > 33);
//filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
console.log(`filterArr:${filterArr}`); 
//[ '123' ]
var mapArr = filterArr.map(val => val * 2);
//map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
console.log(`mapArr:${mapArr}`);
//[ 246 ]
sliceArr.forEach(val => {	
	console.log(val * 2);//246,4
});
//forEach() 方法对数组的每个元素执行一次给定的函数。返回 undefined 值,并且不可链式调用
//reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
var reduceVal = sliceArr.reduce(
	(previousValue, currentValue) => previousValue + currentValue
);
console.log(reduceVal); //1232
//reduceRight() 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
const array1 = [
	[0, 1],
	[2, 3],
	[4, 5]
].reduceRight((accumulator, currentValue) => accumulator.concat(currentValue));

console.log(array1); // expected output: Array [4, 5, 2, 3, 0, 1]


未完待续....👀