遍历
for循环
-
语法:for(var i = 0; i<arr.length; i++ ){ console.log(arr[i]) }
-
对象不可以使用for循环
for..in循环
-
语法:
for(var key in obj){ //key 就是对象的属性名,obj 就是要遍历的对象 console.log(key+"=="obj[key]) }
-
for是遍历的对象有多少属性就循环多少次
数据的传值
-
函数参数传递和基本数据类型的变量赋值一样的,赋值后两个变量互不影响
function fn(n,m){ n = 100; m = 999; } var a = 10; var b = 9; fn(a,b) console.log(a,b); // 10 9
-
函数参数的传递和复杂数据类型的变量赋值是一样的,是地址的赋值,赋值后两个变量操作的同一个存储空间
function ff(obj1){ obj1.name = 'lisi'; } var obj = {name:'zhangsan',age:17}; ff(obj); console.log(obj.name);// lisi
冒泡排序
原理:遍历数组拿到最大值,并放到最后的位置
循环数组的时候,将前一个和后一个进行比较,如果前一个更大,则交换位置
for(var j = 0;j<arr.length-1;j++){
for(var i = 0; i<arr.length-1-j;i++){
if(arr[i]>arr[i+1]){
var tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp
}
}
}
console.log(arr);
数组选择排序
原理:假设第0个位最小值
从第1个开始循环数组,拿数组中的元素个我们假设的值进行比较,如果比我们假设的更小,则记录下索引,并调换位置
假设第1个位最小值
从第2个开始循环数组,拿数组中的元素个我们假设的值进行比较,如果比我们假设的更小,则记录下索引,并调换位置
假设第2个位最小值
。。。
for(var j = 0;j<arr.length-1;j++){
var minIndex = j;
for(var i = j+1; i<arr.length;i++){
if(arr[minIndex]>arr[i]){
minIndex = i
}
}
// 如果minIndex中的值在循环之后没有变化,则不需要交换位置
if(minIndex !== j){
var tmp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = tmp;
}
console.log(arr);
}
ES5的常见数组方法
forEach 遍历数组
-
不会改变原来数组
-
没有返回值
-
-
语法:
数组.forEach(function(item,index,arr){ // item 表示数组中的每一个元素 // index 表示数组中索引 // arr 表示数组本身 }) 数组有多少个元素,就循环多少次
-
案例
var res = arr.forEach(function(item,index,arr){ console.log(index+'===>'+item); console.log(arr); }); console.log(res); console.log(arr);
map 映射
-
根据特定的条件计算返回数组元素计算后的结果,是一个新数组
-
不会改变原来的数组
-
返回值:按照要求改变的新数组,按条件返回元素,条件写在return后
-
var newArr = arr.map(function(item,index,arr){ console.log(item,index); console.log(arr); return item*1.5; }) console.log(newArr); console.log(arr);
-
filter 过滤
-
按条件过滤数组中的元素,符合条件的元素返回组成一个新数组
-
不会改变原来的数组
-
返回值:把符合条件的原数组中的元素,组成的新数组;
-
var newArr = arr.filter(function(item,index,arr){ console.log(item,index,arr); return item>2; }) console.log(newArr); console.log(arr);
-
some() 遍历数组(或者)
-
只要数组中有一个元素符合条件,返回布尔值true,否则返回false,循环数组中,只要出现了一次符合条件的,就停止循环
-
不会改变原始的数组
-
返回值:布尔值
-
var res = arr.some(function(item,index,arr){ console.log(index,item,arr); return item>3; }) console.log(res); console.log(arr);
-
every() 遍历数组(并且)
-
只要数组中有一个元素不符合条件,就返回false,全部符合条件才返回true;,循环数组中,只要出现了一次不符合条件的,就停止循环
-
不会改变原数组
-
返回值:布尔值
-
var res = arr.every(function(t,i,a){ console.log(t,i,a); return t>2; }) console.log(res); console.log(arr);
-
字符串常用方法
charAt
-
语法:
charAt(索引)
; 根据索引下标找到字符串中对应的字符,如果找不到则返回空字符;console.log(str.charAt(0)); // h console.log(str.charAt(20)); // ''
charCodeAt
-
语法:
charCodeAt(索引)
; 根据索引下标找到字符中的对应字符,并且转换为ASC表的编码;console.log(str.charCodeAt(5)); // 97 console.log(str.charCodeAt(0)); // 104 console.log(str.charCodeAt(20)); // NaN
indexOf
-
语法:
indexOf("内容")
; 查找内容在字符串中的索引下标,如果没有则返回-1var str = 'qwerasdtyyuuioi'; console.log(str.indexOf('h')); // 0 console.log(str.indexOf('k')); //12 console.log(str.indexOf('j')); // -1 如果字符串中有多个相同字符,查找返回第一个索引 console.log(str.indexOf('o')); // 4 indexOf(内容,起始索引) 查找内容从起始索引开始查找 console.log(str.indexOf('o',5)); // 9
split
-
语法:
split("内容"); 字符串根据指定的内容字符,炸开,形成一个数组
console.log(str.split('o')); // ["hell", "arey", "u", "k"] console.log(str.split()); // ["helloareyouok"] var str1 = '2021-08-17'; console.log(str1.split('-')); // ["2021", "08", "17"]
substring
-
语法:
substring(索引1,索引2)
; 根据索引截取字符串中的内容,返回截取的内容 -
不会改变原字符 (包前不包后,不包含大的索引)
var str = 'helloarAAAeyouok'
console.log(str.substring(1,3)); // el
console.log(str.substring(3,1)); // el
console.log(str.substring(3)); // loareyouok 只有一个索引就是从这个索引到最后
substr
-
语法:
substr(起始索引,截取的个数)
; 从起始索引开始去取对应的个数 -
不会改变原字符
var str = 'helloarAAAeyouok' console.log(str.substr(0,3)); //hel console.log(str); console.log(str.substr(3,3)); //loa
转换大小写
-
语法:
toLowerCase()
转为小写toUpperCase()
转为大写var str = 'helloarAAAeyouok' console.log(str.toUpperCase()); // HELLOARAAAEYOUOK console.log(str.toLowerCase()); // helloaraaaeyouok
replace
语法:replace(准备替换的原内容,替换的内容)
字符串内容替换
var str = 'helloareyouok';
console.log(str.replace('areyouok',' world'));//hello world