8 22 知识总结

数组常用的方法

## 工厂函数

```js
//手动书写,费时费力
var obj1 = { uname: "张三", age: 21 }
var obj2 = { uname: "李四", age: 23 }
var obj3 = { uname: "王五", age: 12 }
var obj4 = { uname: "赵六", age: 32 }


//工厂函数
function demo(uname, age) {
    var obj = new Object()
    obj.uname = uname;
    obj.age = age

    return obj;
}

console.log(demo("张三", 21))
console.log(demo("李四", 23))
console.log(demo("王五", 12))
console.log(demo("赵六", 32))


//构造函数:没有返回值
function demo(uname, age) {
    this.uname=uname;
    this.age=age
}

var result = new demo("张三", 21)
console.log(result)

```

## 浅拷贝与深拷贝

## 闭包

闭包就是 **能够读取其他函数内部变量的函数** 

### 案例

- 列表点击案例
- 打车

## 字符串常用方法

- length
- charAt              charCodeAt
- indexOf            lastIndexOf            includes            search
- concat                trim
- split
- substr( start , **length** )                substring( start , **end**)            slice(start , end)                    replace
- toLowerCase        toUpperCase
- parseInt(100abc)                parseFloat
- repeat

## 数组常用方法

- concat           join
- shift              unshift                 pop             push                改变原数组
- sort                reverse
- slice                splice                                                              第二个参数不一样
- indexOf         lastIndexOf        includes
- find                findIndex
- forEach        map                    filter            
- some            every
- reduce    

    // var str1 = "北京"
    // var str2 = "欢迎你";

    // console.log(str1.concat(str2))      //字符串拼接

    /*****元素操作*****/
    // var city1 = ["北京", "上海", "广州", "深圳"]

    // city1.push("郑州")
    // console.log(city1)

    // city1.pop()
    // console.log(city1)

    // city1.unshift("郑州")
    // console.log(city1)

    // city1.shift()
    // console.log(city1)

    /**数组排序**/
    // var arr = [23, 45, 12, 56, 39]

    // arr.sort((a, b) => {
    //   // console.log(a, b, "****")
    //   // return a - b
    //   return b - a
    // })

    // console.log(arr)

    /**翻转数组**/
    // var arr = ["北京", "上海", "广州", "深圳"]
    // console.log(arr.reverse())
    // console.log(arr)

    /**数组元素的截取和替换**/
    // var arr = ["北京", "上海", "广州", "深圳"]

    // // var result = arr.slice(1,2)            //截取: 第2个参数是下标
    // var result = arr.splice(1, 1, "杭州")     //替换:第2个参数是length
    // // console.log(result)
    // console.log(arr)


    /****数组下标相关的函数******/
    // var person = ["唐僧", "八戒", "悟空", "八戒", "沙僧", "八戒"]

    // console.log(person.indexOf("八戒"))
    // console.log(person.lastIndexOf("八戒"))

    /**包含**/
    // console.log(person.includes("白龙马"))

    // var result = person.find((item) => {
    //   return item == "八戒"
    // })
    // console.log(result)


    /**数组循环**/
    var arr = [
      { id: 1001, name: "八戒", weight: 200 },
      { id: 1002, name: "悟空", weight: 120 },
      { id: 1003, name: "唐僧", weight: 80 },
      { id: 1004, name: "沙僧", weight: 160 },
    ]

    // arr.forEach((item, index) => {
    //   // item.weight = 100       //修改item中已经存在的属性weight
    //   item.age = 200              //为item中添加新属性
    // })
    // console.log(arr)

    /***for循环遍历数组***/
    // for (var i = 0; i < arr.length; i++) {
    //   // console.log(i)
    //   console.log(arr[i])
    // }

    /****使用in关键字遍历数组:每一项是下标*******/
    // for (var k in arr) {     
    //   // console.log(k)
    //   console.log(arr[k])
    // }

、 改变原数组的方法 (常用)

push : 尾部追加  (向数组的尾部添加一个或多个元素,返回值是数组的长度)

unshift : 头部添加 (向数组的头部添加一个或多个元素,并返回数组长度)

pop : 尾部删除    (删除数组最后一个元素)

shift : 头部删除 (删除数组第一个元素)

sort: : 排序 (对数组元素进行排序)

join : 分隔  (将数组的每一项通过自己指定的字符进行拼接、默认连接为 ",")

reverse : 反转 (将数组进行倒序)

splice :删除元素或者添加元素,如:splice('从哪里','删几位','添加的元素')

二、其他数组方法(常用)

(1)对数组进行遍历

map(): 该方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值、原数组不变

forEach(): 用于循环调用数组中的每个元素,并将元素传回给回调函数、原数组不变

every(): 对数组中每一项进行判断,若每一项都返回true、则返回true,有一个为false,则返回false,并停止遍历,原数组不变

some(): 对数组每一项进行判断,如果有一个元素满足条件,则返回true , 并停止遍历,如果没有满足条件的元素,则返回false,原数组不变

(2)查找数组中元素

filter(): 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素、原数组不变

find(): 当数组中的元素在测试条件时返回 true 时, 返回符合条件的元素,之后的值不会再调用执行函数,如果没有符合条件的元素返回 undefined、原数组不变

findIndex(): 当数组中的元素返回 true 时, 该方法会返回符合条件的元素的索引位置,之后的值不会再调用执行函数,如果没有符合条件的元素返回 -1、原数组不变

(3)

slice : 当有两个参数 如 slice('起始位置的下标','到哪里结束') 如果只有一个参数 返回的是从该指定位置到数组末尾的所有项,不改变原数组
 


    /********使用of遍历数组:循环出的是数组的每一项**********/
    // for (i of arr) {
    //   console.log(i)
    // }


    /****使用in可以遍历对象********/
    var obj = { uname: "张三", age: 21 }
    // for (var k in obj) {
    //   // console.log(k)
    //   console.log(obj[k])
    // }


    // for (var i of obj) {
    //   console.log(i)
    // }


    // 区间     [12,45)     (12,45]  


    // var city2 = ["郑州", "杭州"]

    // ["北京", "上海", "广州", "深圳", "郑州"]

    // city1.push(...city2)

    // console.log(city1)
    // console.log(city1.concat(city2))

 //字符串和数组相互转换
    // var str = "北京 上海 广州 深圳"
    // var arr = str.split(" ")      //字符串转数组

    // var newStr = arr.join("-")    //数组转字符串
    // console.log(newStr)
    // console.log(arr)


    /*******截取字符串*******/
    // var str = "北京欢迎你"
    // var result = str.substr(2, 2)        //第二个参数是length
    // console.log(result)

    // var result = str.substring(2, 4)        //第二个参数是下标    [start,end)  左闭右开区间
    // console.log(result)

    //替换 replace
    // var str="北京非常欢迎你"
    // var result=str.replace("非常","十分")
    // console.log(result)

水仙花


    function fun() {
      for (var i = 100; i < 1000; i++) {
        //分别取百位、十位和个位的数字
        var sum = parseInt(i / 100) ** 3 + parseInt(i / 10 % 10) ** 3 + parseInt(i % 10) ** 3
        if (sum == i) {
          console.log(i)
        }

      }
    }

    fun()

 /******引用数据类型**********/
    // var obj1 = { uname: "张三" }
    // var obj2 = obj1;     //{uname:"张三"}

    // obj2.uname="李四"    //{uname:"李四"}

    // console.log(obj1)

    /*****简单数据类型********/
    // var str1 = "北京"
    // var str2 = str1;      //"北京"

    // str2 = "上海"
    // console.log(str1)


    var obj1 = {
      uname: "张三",
      age: 21,
      
    }

    //
    var obj2 = {}
    for (var k in obj1) {
      obj2[k] = obj1[k]
    }

    // console.log(obj2)
    obj2.uname="李四"
    console.log(obj1)

字符串的获取方法

  • length() : 获取字符串当中含有的字符个数,拿到字符串长度
  • cancat(String str) :将新的字符串拼接到当前字符串后面,获得新的字符串
  • chatAt(int index) : 获取指定索引位置的单个字符(索引从0开始)
  • indexOf(String str) : 查找参数字符串在本字符串当中首次出现的索引位置,如果没有则返回 - 1 (索引从0开始) 

四、字符串的截取方法

  • substring(int index):截取从参数位置(包含该参数)一直到字符串末尾,返回新的字符串(索引也是从0开始)
  • substring(int begin,int end):截取从begin开始,一直到end结束中间的字符串([begin,end):左闭右开)

五、字符串的转换方法

  • toCharArray() :将当前字符串拆分成为字符数组作为返回值
  • getBytes():获得当前字符串底层的字节数组(如:a对应97,b对应98) 
  • replace(CharSqquence oldString,CharSequence newString):将所有出现的字符串替换成新的字符串,返回替换之后的新字符串(这条可以用于脏话过滤) 

六、字符串的分割方法

  • split(String regex):按照参数的规则,将字符串切分成若干部分

    注意:

    • split方法的参数是一个“正则表达式”,regex:regular expersion
    • 如果按照英文句点"."进行切分,则不成功。必须写成“\\ .”才能成功切分   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值