JS基础之数组

// 数组
// 数组的创建
// 1.字面量创建
var arr = ["店","小","二","贼","不","听","话"];
console.log(typeof arr)
// 2.使用js提供的构造函数创建
var arr2 = new Array();
if(Array.isArray(arr2)){
	arr2[0] = '二二二';
	arr2[1] = '亲亲亲';
	arr2[2] = 'shannen';
	console.log(arr2);
	var str_arr2 = arr2.toString();
	console.log(str_arr2);
	console.log(typeof str_arr2); 
}

// 数组的访问
console.log("第3个元素为:"+arr[3]);

// 数组的长度
console.log("数组的长度为:"+arr.length);


// 数组的常用方法
// 0.join分割字符串
var arr3 = ["店小二","喜欢","偷懒"];
var join_str = arr3.join('~');
console.log(join_str);

// 1.栈,队列
	// 栈(lifo last - in- first - out)方法.  push() pop() 队列方法
	//push()方法返回的是元素入栈以后,数组的长度
var new_length = arr3.push('shannen');
console.log("元素入栈后,数组的长度为:"+new_length);
console.log(arr3);
	// push() 往数组的最后一项添加内容
	// push()方法返回的是弹出栈顶的元素
var out_element = arr3.pop();
console.log("出栈的元素为:"+out_element);
console.log(arr3);

// 2.数组倒序,升序,降序
var arr4 = [10,7,34,56,26,78,23,2,4,6];
console.log("原数组为:"+arr4);
// 倒序reverse 会改变原数组
arr4.reverse();
console.log("倒序后的数组为:"+arr4);
// sort()函数中传入一个比较函数可以实现排序,若不传入参数,则只比较每个元素的第一位 
// sort()函数会改变原数组
arr4.sort();
console.log("未传参的sort排序后的数组为:"+arr4);
function compare_up(a,b){
	return a-b;
}
arr4.sort(compare_up);
console.log("sort函数中传入了比较函数后的数组:"+arr4);

// 3.操作方法  concat() slice()  splice()
// concat() 数组合并 不改变原数组,需要定义一个数组来接收
var concat_arr41 = arr4.concat('shannen');
console.log('concat()方法并不会改变原数组,原数组为:'+arr4);
console.log('使用concat方法合并后的数组:'+concat_arr41);
var concat_arr42 = arr4.concat([1,4,6,7]);
console.log('使用concat方法合并后的数组:'+concat_arr42);
var concat_arr43 = arr4.concat({name:"邓",age:23});
console.log('使用concat方法合并后的数组:'+concat_arr43);
// slice() 切片:将当前数组中的一个或者多个项创建一个新数组
// slice()不会改变原数组,返回值是切片后的数组,需要定义一个新数组来接收它
var slice_arr4 = arr4.slice(2,5);
console.log("slice切片操作后的数组:"+arr4);
console.log("slice切片操作的返回值:"+slice_arr4);
console.log("slice切片操作的返回值类型:"+typeof slice_arr4);
// splice() 删除,替换,插入 会改变原数组
// 删除 会改变原数组,返回值为被删除的元素
console.log("splice删除操作前的数组:"+arr4);
var splice_delete_arr4 = arr4.splice(3,3);
console.log("splice删除操作后的数组:"+arr4);
console.log("splice删除操作的返回值:"+splice_delete_arr4);
console.log("splice删除操作的返回值类型:"+typeof splice_delete_arr4);
// 替换 会改变原数组,返回值为被替换掉的元素
var splice_replace_arr4 = arr4.splice(2,3,'me');
console.log("splice替换操作后的数组:"+arr4);
console.log("splice替换操作的返回值:"+splice_replace_arr4);
console.log("splice替换操作的返回值类型:"+typeof splice_replace_arr4);
// 插入 会改变原数组
var splice_in_arr4 = arr4.splice(1,0,'in');
console.log("splice插入操作后的数组:"+arr4);
console.log("splice插入操作的返回值:"+splice_in_arr4);
console.log("splice插入操作的返回值类型:"+typeof splice_in_arr4);

// 4.位置方法  indexOf() lastIndexOf()
// indexOf(元素,起始位置) 从左往右查询元素第一次出现的位置,返回值为找到的索引位置
// 查找时起始位置也在查找范围内
var arr5 = ['今天','明天','昨天','明天','昨天','明天'];
console.log("数组为:"+arr5);
var index1 = arr5.indexOf('明天');
console.log("明天第一次出现的位置为:"+index1);
var index2 = arr5.indexOf('明天',2);
console.log("明天在第2个元素后第一次出现的位置为:"+index2);
var index2 = arr5.indexOf('明天',3);
console.log("明天在第3个元素后第一次出现的位置为:"+index2);
// lastIndexOf(元素,起始位置) 从右向左查询元素第一次出现的位置,返回值为找到的索引位置
// 查找时起始位置也在查找范围内
var last_index1 = arr5.lastIndexOf("明天");
console.log("明天最后一次出现的位置为:"+last_index1);
var last_index2 = arr5.lastIndexOf('明天',2);
console.log("明天从第2个元素往前数,第一次出现的位置为:"+last_index2);
var last_index3 = arr5.lastIndexOf('明天',3);
console.log("明天从第3个元素往前数,第一次出现的位置为:"+last_index3);

// 5.迭代方法 filter() map() forEach()
// filter(function(item,index,array){...}) 过滤数组元素,返回结果集,传入的function()的array参数可以被省略
var arr6 = [1,2,3,4,5,6,7,8,9,10];
var filter_return_results = arr6.filter(function(item,index,array){
	if(item % 2 === 0){
		return item;
	}
});
console.log(filter_return_results);
// map() 返回处理后的结果集
var arr7 = [
	{
		name:"shannen",
		age:17
	},
	{
		name:"Ella",
		age:18
	},
	{
		name:"Elaine",
		age:23
	}
];
var mapReturnResults = arr7.map(function(item,index,array){
	var modifyName = item.name + " Huang";
	var modifyAge = item.age * 2;
	return {modifyName,modifyAge};
});
console.log(mapReturnResults);
// forEach()
arr7.forEach(function(item,index,array){
	console.log(item.name);
});

  

原文地址:https://www.cnblogs.com/shannen/p/12465094.html