day0324
debugger
用debugger阻止复制
数组
var arr = [1, 2, 3, 4, 5];
arr.a = 10;
arr.b = 20;
arr.c = function () {
}
console.log(arr);
遍历数组
3个方法,之后还一个
1.for循环
只能遍历索引值,不能遍历到组数组的属性和方法
遍历每一个元素,包含空元素,以数字下标遍历所有元素,不包含数组的属性和方法
for (var i = 0; i < arr.length; i++) {
console.log(arr[i], i)
}
2.forEach
不能遍历空元素
遍历除空元素外的所有其他元素,不遍历数组额度属性和方法
arr.forEach(function (item, index) {
console.log(item, index);
})
3.for in
不能遍历空元素 遍历的是对象
将数组的下标转换为字符串,并且遍历所有非空元素和数组的方法和属性
for (var prop in arr) {
console.log(arr[prop], prop);
}
排序
冒泡、选择、快排 面试常考
var arr = [1, 2, 4, 0, 1, 10, 9, 24, 17, 13, 6, 5];
桶排序
var obj = {
};
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = arr[i];
}
console.log(obj);
key与value要相同,不能有重复元素
冒泡排序
for (var i = 0; i < arr.length; 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;
}
}
}
console.log(arr);
选择排序
for (var i = 0; i < arr.length - 1; i++) {
var min = i;
for (var j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (i !== min) {
var temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
console.log(arr);
快速排序 需要递归
pivot英文:支点,枢轴,中心,
function quickSort(elements) {
if (elements.length <= 1) return elements;
var pivotIndex = Math.floor(elements.length / 2);
var pivot = elements.splice(pivotIndex, 1)[0];//将支点元素拿出来
var left = [];
var right = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i] < pivot) {
left.push(elements[i]);
} else {
right.push(elements[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
arr = quickSort(arr);
console.log(arr);
reverse()
反转数组,返回原数组
reverse英文:颠倒,使反转,相反的
区分reserve:预定,储备,拥有,保持
var arr = [1, 2, 3, 4, 5, 6, 7];
var arr1 = arr.reverse();
console.log(arr,arr1);
重构:
function array_reverse(arr) {
for (var i = 0; i < parseInt(arr.length / 2); i++) {
var temp = arr