排序/运算符/逻辑分支/循环

排序

一. 冒泡排序

元素和相邻最近的元素比较

   1. 外层循环-1;

   2. 内层循环-1-i;

   3. 内循环相邻比大小;

   4. 邻里交换位置

var arr = [3, 5, 8, 4, 7, 6];        
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 tmp = arr[j + 1];                    
            arr[j + 1] = arr[j];                    
            arr[j] = tmp;                
        }            
    }        
}        
console.log(arr);
复制代码

二 . 选择排序

和每一个元素和其他元素比较

var arr = [3, 5, 8, 4, 7, 6];        
for (var i = 0; i < arr.length; i++) { //台上i            
    for (var j = i+1; j < arr.length; j++) { //台下j                
        if (arr[i] > arr[j]) {                    
            var tmp = arr[j];                    
            arr[j] = arr[i];                    
            arr[i] = tmp;                
        }            
    }        
}    
console.log(arr);
复制代码

三 . 快速排序

  1. 找到中间的下标

  2. 通过中间的下标,找到中间数

  3. 定义左边的数组

  4. 左边 + 中间数 + 右边数,这里使用的是 函数的递归

  5. 设置一个变量 接受函数

var arr = [2, 4, 6, 3, 5];
function fnt(arr) {
    if (arr.length <= 1) {
        return arr;  //如果数组小于等于1, 就不动数组
    }
    //1. 找到中间的下标
    var mIndex = Math.floor(arr.length / 2);
    //2. 通过中间的下标,找到中间数
    var mVal = arr.splice(mIndex, 1)[0];
    var leftArr = [];   // 定义左边的空数组
    var rightArr = [];  // 定义右边的空数组
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > mVal) {
            rightArr.push(arr[i]);
        } else {
            leftArr.push(arr[i]);
        }
    }
    // 左边 + 中间数 + 右边数,这里使用的是 函数的递归
    return fnt(leftArr).concat(mVal, fnt(rightArr));
}
var res = fnt(arr); //设置一个变量 接受函数
console.log(res);

去重

imdexOf, 如果找到啦就返回下标,找不到就返回-1;

function fn1(list) {            
    var tempArr = []; //一个空数组            
    for (var i =0; i <list.length; i++) {                
        if (tempArr.indexOf(list[i]) == -1) {                    
           tempArr.push(list[i]);                
        }            
    }            
    return tempArr;         
}

运算符

1. null

  • null表示没有对象, 没有值
  • 作为函数的参数 ,表示该函数的参数不是对象
  • 是作为对象原型的终点

2. undefined

  • undefined表示缺少值, 有值没有定义
  • 定义了形参 , 没有传实参 ,显示undefined
  • 对象属性名不存在时 ,显示undefined
  • 函数没有写返回值, 也就是没有写return ,得到的是undefined
  • 写了return, 但没有赋值, 拿到的值undefined

3.null和undefined转换成number数据类型

  • null默认为 0
  • undefined默认是 NaN

4. 总结

  • string bool 有内容就是true

  • numder bool 非0就是true (-1也是true)

  • obj bool 不是null的就是true,是null就是false

  • undefined bool 始终都是false

  • parseInt 取值 会丢失精度

  • parseFloat 保留小数

5. 逻辑运算符

  • && (与)

  • || (短路运算算符)(或) (取真)

  • ! (非)

6.关系运算符

  • <, >=, <=, ==, ===, !=, !==

7.== 和 ===的比较

  • 1). == 比较值相等, 例 : 5=="5" 纸币5元和硬币5元值相等

  • 2). ===值和类型, 纸币5元和硬币5元

8.自增,自减

  • ++  ,   -- 

  • a++ : ++在后 ,先取值, 后运算

  • ++a : +=在前 ,先运算, 后赋值

9.类型转换

  • parseInt ()
  • parseFloat()
  • Boolean () 其他类型转换至boolean类型 , 强制转换
  • Number()
  • toString() 或 String()

10. 隐式转换, 自动转换

  • 可以利用  - , * , /  进行自动转换​ == 也会进行自动转换​
  • eg: 1 == true

逻辑分支

1. if分支的语法

// 单分支语法
if (表达式) {  
    //逻辑代码  
};

// 多分支语法
if (  ) {      
} else if (  ) {    
} else {        
}; 

2. switch 分支 语法

  • switch 是比较严格 要 恒等于比较值 和内容相等才是true
switch (表达式) {            
    case 条件1:                
        // 逻辑代码                
    break;            
    case 条件2:                
        // 逻辑代码*                
    break;            
    case 条件3:                
        // 逻辑代码                
    break;            
    default:                
    break; 
}

循环

1.while循环语法

// 打印100以内的奇数        
var num = 0;        
while (num < 100) {            
    num++;            
    if (num % 2 != 0) {                
        console.log(num);            
    }        
}

2. do...while..语法

  • do..while..先执行,后判断,不管条件是否满足
// 打印100以内的奇数        
var num = 0;        
do  {            
       
    if (num % 2 != 0) {                
        console.log(num);            
    }     
    num++;            
} while (num < 100)

// 示例:计算1+2+3+……+100之和。        
var num = 0;        
var sum = 0;        
do {            
    sum=sum+num;            
    num++;        
}
while (num <= 100)        
console.log(sum);

3.for循环 语法 (固定循环)

  • for 有固定次数的情况下, 有限使用for
// 简洁的for死循环 
for( ; ; ){ .. .. }

// 示例:计算1+2+3+……+100之和。        
var sum=0;        
for (var i =0; i <=100; i++) {            
    sum = sum +i;        
}        
console.log(sum);

4.for(...of...){ ... }不支持普通对象的遍历

var arr = ['1', '2', '3'];
for(var i of arr) {
  console.log(i);
}

5.forEach

data=[{name:"张三",age:"12"},{name:"李四",age:"16"},{name:"王五",age:"19"}]

data.forEach((item, index)=> {
  console.log(item,index)
});

6. 过滤方法 filter()

// 示例 查询数组里的偶数
var array  = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]        
var newArray = array.filter((item, i, arr) => {                     
    return item % 2 === 0;        
})        
console.log(newArr); //输出结果:[2, 4, 6, 8, 10]
 

break 的扩展

  • break 能在switch中使用, 能在for中使用

  •  默认是结束就近层循环,也可以结束指定层循环;

  • continue 的作用, 结束当次循环,并不是结束整个循环,

  • continue后面的语句不再执行, 只能在循环里面

aaa: for (var i = 0; i < 5; i++) {
     console.log("i :" + i)
     bbb: for (var j = 0; j < 3; j++) {
     	console.log("j : " + j);
     	break aaa;
    }
}

arguments 伪数组扩展

  • 只有在函数内部才有的特殊的变量,叫做arguments
  • arguments又叫做 伪数组 它的指针_ _proto__是Obuject

  • arguments的作用 是动态获取实参

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

molanyouming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值