数组的常见操作

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>数组常见操作</title>
	</head>

	<body>

	</body>

</html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
	// 1、数组遍历
	var arr1 = ['儒家', '墨家', '法家', '道家', '兵家', '阴阳家', '名家', '鬼谷', '蜀山'];
	// 回调函数有两个参数,第一个是元素索引,第二个为当前值 
	$.each(arr1, function(key, val) {
		console.log('下标:' + key + ",键值:" + val);
		// 可使用return false退出循环
		// return false;
	});

	// 2、数组的映射
	var arr2 = $.map(arr1, function(val) {
		return val + '掌门';
	});
	console.log(arr2);
	var arr3 = $.map(arr1, function(val) {
		return val == '道家' ? val + "传人" : val
	});
	console.log(arr3);
	var arr4 = $.map(arr1, function(val) {
		//为数组元素扩展一个新元素 
		return [val, (val + '传人')];
	});
	console.log(arr4);

	// 3、数组的添加
	var arr5 = [1, 3, 4, 7, 8, 9, 6, 3, 7, 6, 1];
	arr6 = arr5.push(1);
	console.log(arr5.push(1));

	// 4、数组排序

	// a、数组冒泡排序
	var arr7 = [25, 15, 21, 11, 43, 62, 80, 35, 14, 54, 39, 57, 24];

	function sort(arr) {
		// 让数组中的元素俩俩进行比较,实现替换;
		for(var i = 0; i < arr.length - 1; i++) {
			for(var j = 0; j < arr.length - 1 - i; j++) {
				if(arr[j] > arr[j + 1]) {
					var temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		return arr;
	}
	console.log(sort(arr7));

	// b、sort方法排序
	var arr7 = [25, 15, 21, 11, 43, 62, 80, 35, 14, 54, 39, 57, 24];
	arr7a = arr7.sort(function(a, b) {
		return b - a;
	})
	console.log(arr7a);

	// c、对象数组按照对象属性进行排序
	// 像上面对数组按照大小排序,指定比较函数一样,只是此时比较的是对象的属性 
	var infoObj = [{
			name: "赤练",
			sex: 'female',
			age: 30
		},
		{
			name: "白凤",
			sex: 'male',
			age: 20
		},
		{
			name: "卫庄",
			sex: 'female',
			age: 40
		},
		{
			name: "盖聂",
			sex: 'male',
			age: 45
		}
	];
	// 指定排序的比较函数
	function compare(property) {
		return function(obj1, obj2) {
			var value1 = obj1[property];
			var value2 = obj2[property];
			// 参数1在前,表示升序;反之,表示降序;
			return value1 - value2;
		}
	}
	var sortObj = infoObj.sort(compare("age"));
	console.log(sortObj);

	// 5、数组去重:最简单的去重方法;

	// a、indexOf
	// 先创建一个新的数组来存储数据,利用es5中的indexOf方法在新的数组中寻找重复项,如果没有就添加到新的数组中;
	var arr8 = ["a", 31, 15, 22, 1, 4, 22, 31, 3, 3];
	var arr9 = [];
	for(var i = 0; i < arr8.length; i++) {
		if(arr9.indexOf(arr8[i]) == -1) {
			arr9.push(arr8[i]);
		}
	}
	console.log(arr9);
	console.log(arr8);

	// b、利用json特性
	var arr10 = ["a", 31, 15, 22, 1, 4, 22, 31, 3, 3];

	function select(arr) {
		var json = {};
		var arr2 = [];
		for(var i = 0; i < arr.length; i++) {
			if(!json[arr[i]]) {
				json[arr[i]] = true;
				arr2.push(arr[i])
			}
		}
		return arr2;
	}
	console.log(select(arr10));

	// c、排序后去重
	var arr11 = ["a", 31, 15, 22, 1, 4, 22, 31, 3, 3];

	function unique(arr) {
		// 用sort 进行简单排序,相同的数字一定被排到了一起
		arr.sort();
		// 对排序之后的数组遍历
		for(var i = 0; i < arr.length; i++) {
			// 让当前的数和下一个数进行比较	
			if(arr[i] == arr[i + 1]) {
				//如果相等,用splice(i,1) 方法对其进行删除
				arr.splice(i, 1);
				i--;
			}
		}
		// 返回去重后的新数组
		return arr;
	}
	console.log(arr11);
	console.log(unique(arr11));
	// 改变了原数组
	console.log(arr11);
</script>

猜你喜欢

转载自blog.csdn.net/qq_41115965/article/details/80732239