数组排序
// 冒泡排序
//当i=0的时候,里面的循环完整执行,从j=0执行到j=6,这也就是第一遍排序,结果是将最大的数排到了最后,
// 这一遍循环结束后的结果应该是[8,15,88,55,76,21,39,94]
// 当i=1的时候,里面的循环再次完整执行,由于最大的数已经在最后了,
// 没有必要去比较数组的最后两项,这也是j<arr.length-1-i的巧妙之处,结果是[8,15,55,76,21,39,88,94]
// 说到这里,规律就清楚了,每次将剩下数组里面最大的一个数排到最后面,
// 当第一个循环执行到最后的时候,也就是i=6,此时,j=0,只需要比较数组的第一和第二项,比较完毕,返回。
var examplearr = [8, 94, 15, 88, 55, 76, 21, 39];
function sortarr(arr) {
for (i = 0; i < arr.length - 1; i++) {
// console.log(1);
for (j = 0; j < arr.length - 1 - i; j++) {
// console.log(2);
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
sortarr(examplearr);
console.log(examplearr);
// 插入排序
function insertSort(array) {
/*start根据已排列好的项数决定*/
var start = 1;
/*按顺序,每一项检查已排列好的序列*/
for (var i = start; i < array.length; start++ , i++) {
/*跟已排好序的序列做对比,并插入到合适的位置*/
for (var j = 0; j < start; j++) {
/*小于或者等于时(我们是升序)插入到该项前面*/
if (array[i] <= array[j]) {
// console.log(array[i] + ' ' + array[j]);
array.splice(j, 0, array[i]);
/*删除原有项*/
array.splice(i + 1, 1);
break;
}
}
}
return array;
}
console.log(insertSort(examplearr));
数组去重
// 通过索引值 indexof == -1
function unique1(arr) {
var newArr = [];
var len = arr.length;
for (var i = 0; i < len; i++) {
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
}
return newArr;
}
//利用对象
function unique3(arr) {
var obj = {},
len = arr.length,
newArr = [];
for (var i = 0; i < len; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
newArr.push(arr[i]);
}
}
return newArr;
}