1. 冒泡排序
//外层循环代表趟数 每趟确定一个最(大)值 故应有arr.length-1 趟
var arr = [15,2,8,6,54,13,85,92,113,70,5];
console.log(arr)
for (var i = 0;i<arr.length-1;i++) {
//内层循环代表两两比较 arr.length个数 应比较arr.length-1次
//且因为每一次内层循环完就有一个最值 故 还应减去最值的个数(i)
for (var j = 0;j<arr.length-1-i;j++) {
if (arr[j]>arr[j+1]) {
arr[j]=arr[j]+arr[j+1];
arr[j+1]=arr[j]-arr[j+1];
arr[j] -=arr[j+1]; } } }
console.log(arr)
2. 选择排序
var arr = [1,15,2,8,113,54,13,92,85,6,70,5];
var temp;
console.log(arr)
//外层循环 次数arr.length-1
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; } }
temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
console.log(arr)
3. 数组去重的三种方法:
3.1 常规方法: var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];
console.log(arr);
for (var i=0;i<arr.length-1;i++) {
for (var j=i+1;j<=arr.length-1;j++) {
if (arr[i]===arr[j]) {
arr.splice(j--,1) } } }
console.log(arr)
3.2 利用对象:var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];
console.log(arr);
var obj = { };
for (var i=0;i<arr.length;i++) {
//判断obj[]里是否有 a[i]属性名
if (!obj[arr[i]]) {
obj[arr[i]]='a';
}else{ arr.splice(i--,1)
//i--原因:因为splice删除后 后面索引自动往前移动一个位置(-1),
//故需要i--抵消循环的i++ } }
console.log(arr)
3.3 Set方法 不推荐 存在数据类型转换 内耗过高
var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];
console.log(arr);
//利用Set默认不允许重复 但Set属于数组 需要Array.from转换一下数据类型 此方法
//Set属于ES6中的 有兼容问题
var arr1= Array.from( new Set(arr))
console.log(arr1)
4. ES5新增数组常见方法
2个索引方法:indexOf() 和 lastIndexOf();
5个迭代方法:forEach()、map()、filter()、some()、every();
2个归并方法:reduce()、reduceRight();
console.log(arr.indexOf(1)); //从左往右寻找
console.log(arr.lastIndexOf(1)); //从右往左寻找
forEach() arr.forEach(function(item,index){
console.log(item, index);
}); //item指数组中的每个指 index指数组索引
//map()、filter()、some()、every() 要返回值
map() var arr2 = arr.map(function(item, index){
return item * 2;
});
filter() var arr2 = arr.filter(function(item, index){
return item < 10;
})
console.log(arr2); 注:过滤掉不满足条件的
some()、every() 返回布尔值
/* var isBig = arr.some(function(item, index){
return index>10;
}) */ 有一个满足条件即可
var isBig = arr.every(function(item, index){
return index<10;
}) 必须每一个满足条件
console.log(isBig);
5 string常见API
charAt() 返回在指定位置的字符。
indexOf() 检索字符串,返回下标
lastIndexOf( ) 从后向前搜索字符串。
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
fromCharCode() 从字符编码创建一个字符串。
concat() 连接字符串。
match() 找到一个或多个(正则表达式的)匹配。
replace() 替换与正则表达式匹配的子串。
search() 检索与正则表达式相匹配的值。
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。
split() 把字符串分割为字符串数组。
substr() 从起始索引号提取字符串中指定数目的字符。
substring() 提取字符串中两个指定的索引号之间的字符。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写。
trim() 去掉字符串前后空格(ES5)
startsWith() 字符串是否以某个字符开头(ES6)
endsWith() 字符串是否以某个字符结尾(ES6)
includes() 字符串是否包含某个字符(ES6)
repeat() 重复某个字符串几次(ES6)