数组的方法

1.Array of
1.1 what?
Array of 是一种新的数组创建模式
1.2why? 以前创建数组会有一个问题就是

		let old = [0]
        old[3] = 3
        console.log(old)

结果打印的是:(4) [0, empty × 2, 3],当没有赋值时,系统会默认添加两个undefined,这样容易搞混淆,所以需要一个不产生空的方式.
1.3how?

		let arr = Array.of(6)
        console.log(arr.length)
        console.table(arr)
  1. Array.form
    2.1 what?
    一种将字符串转换成数组的方式
    2.2 why?
    这样方便把一个字符串里面的内容给遍历出来
    2.3 how?
	let str = '今天天气真不错'
    console.log(typeof Array.from(str))

3.展开语法
3.1 what?
…name 把数据以字符串的形式保存
如果是参数的形式就是把实参装进一个数组内
3.2 why?
这样写起来比较简便,而且还可以使用数组的方法
3.3 how?

 	let arr = ['张飞', '狂铁', '夏侯', '蒙犽']
    let arr2 = ['张飞1', '狂铁', '夏侯', '蒙犽']
    let arr3 = ['张飞2', '狂铁', '夏侯', '蒙犽']

    function show (...args) {
      console.log(args[0]) //(4) ["张飞", "狂铁", "夏侯", "蒙犽"]
    }
    show(arr, arr2, arr3)

4.push往后添加
会对原数组进行改变


    function addArray (begin, end) {
      let arr = []
      for(let i=begin; i<=end; i++){
        arr.push(i) //加在最后面
      }
      return arr
    }
    console.table(addArray(1, 10))

5.unshift往前添加
会对原数组进行改变

	let arr = [1,2,3]
	arr.unshift(6,7)
	console.log(arr) //[6,7,1,2,3]

6.pop从后开始删除
会对原数组进行改变

    arr.pop()
	console.log(arr) //[6,7,1,2]

7.shift从前开始删除
会对原数组进行改变

    arr.shift()
	console.log(arr) //[7,1,2]

8.slice对数组进行截取
不会对原数组产生改变
参数为起始到结束位置

    console.log(arr.slice(1,3)) //[1,2]

9.splice对数组进行增删改
会对原数组产生改变

第一个为起始,第二个为0就是增加

    arr.splice(3,0,'增','增','增') // [7, 1, 2, "增", "增", "增"]


第一个为起始,第二个为第一个数之后改的位置,

    arr.splice(3,1,'改','改','改') //[7, 1, 2, "改", "改", "改", "增", "增"]


第一个为起始,第二个为删几个,是从第一个数开始删起

    arr.splice(3,4) // [7, 1, 2, "增"]


第一个为要查的,第二个为结束位置

    let num = arr.splice(2, 2) //2, "增"

9.indexof lastindexof 查找元素,返回下标(不推荐使用,用下面那个)
10.includes查找元素,返回布尔值(不推荐使用,用下面那个)
11.find
因为includes查找引用类型时可能会产生新的内存地址,所以要使用find这种类似遍历的查找,返回的是具体的对象

	let arr = [{name: '张三'}, {name: '李四'}, {name: '王五'}]
    let target = arr.find(function(item){
      return item.name == '李四'
    })
    console.log(target) //{name: '李四'}

12.findIndex 和上面一样,只是返回的是下标

	let arr = [{name: '张三'}, {name: '李四'}, {name: '王五'}]
    let target = arr.findIndex(function(item){
      return item.name == '李四'
    })
    console.log(target) //1

13.sort()排序
a是最大和最小的值,b是其他所有的值,原理应该是通过冒泡排序来一个一个算的
通过比较a和b的大小,一般都是a在前就是从小到大
b在前就是从大到小

    let cart = [
      { name: 'iphone', price: 8000},
      { name: 'imac', price: 10000},
      { name: 'ipad', price: 5000}
    ]
    cart = cart.sort(function(a,b){
      return a.price - b.price
    })
    console.table(cart)

14.冒泡排序

	let arr = [1,2,3,45,76,1,42,7,512,8,33,0,321]
    function pao (array) {
      for (const n in array){
        for(const m in array){
          if(array[n] < array[m]){
            const value = array[n]
            array[n] = array[m]
            array[m] = value
          }
        }
      }
      return array
    }
    console.log(pao(arr))

15.forEach循环遍历

	let arr = [1,2,3,45,76,1,42,7,512,8,33,0,321]
    arr.forEach(function(item, index, lessons){
      console.log(item)
      console.log(index)
      console.log(lessons)
    })

16.every 检测数据
每一个都要为真才会返回真

	let words = ['黄博文', '黄博文', '黄博文']
    let title2 = '黄博文牛逼'

    let state = words.every(function (item, index, array){
        return title2.includes(item)
    })
    console.log(state) //true

17.some检测数据
有一个为真就返回真

	<input type="text" name="title">
    <span></span>


	let keywords = ['张三', '李四']
    let title = document.querySelector('[name="title"]')
    title.addEventListener('keyup', function () {
      	const res = keywords.some(keyword => {
        return this.value.indexOf(keyword) != -1
    })
      document.querySelector("span").innerHTML = res ? "" : "必须包含" + keywords.join(",") + "关键词"
    })

18.filter过滤

	let arr = [
      { name: '张三', age: 18, gender: '男'},
      { name: '李四', age: 28, gender: '女'},
      { name: '王五', age: 38, gender: '男'},
      { name: '赵六', age: 48, gender: '男'}
    ]
    let res = arr.filter(function(array){
      return array["gender"] == '男'
    })
    console.log(res)

19.手写filter原理

	let arr = [1,2,3,4]
    function filter (array, callback) {
      let newArray = []
      for (const value of array){
        if(callback(value) === true){
          newArray.push(value)
        }
      }
      return newArray
    }
    console.log(filter(arr, function(value){
      return value>1
    }))

20.map复制数组

	let arr = [1,2,3,4]
    
    let newArray = arr.map(function(item, index, arr){
      return item
    })
    console.log(newArray) //[1, 2, 3, 4]

21.reduce 可以迭代数组,并且第一个参数可以是上一次当前函数调用返回的值

 	let arr = [
      { name: '张三', age: 18, gender: '男'},
      { name: '李四', age: 28, gender: '女'},
      { name: '王五', age: 38, gender: '男'},
      { name: '赵六', age: 48, gender: '男'}
    ]
    function filter (array) {
      return array.reduce (function (arr, item) {
        let find = arr.find(function (v) {
          return v.gender === item.gender
        })
        if (!find) {
          arr.push(item)
        }
        return arr
      }, [])
    }
    console.table(filter(arr))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值