好好学习js啦 (一,数组,持续学习,持续更新)

191 阅读3分钟

数组方法

  • fill:将一个固定的值替换到数组中的元素
  • arr.fill(a,b,c)
  1. a:必填,表示填充的值,
  2. b:选填,表示开始的位置,
  3. c:选填,停止的位置,默认为数组最后一位
  • slice:需要重新定义一个新的数组去接收
  • slice(a,b)
  1. a:从何处开始选取。如果是-1 表示最后一个元素,-2 表示倒数第二个元素
  2. b:从何处结束选取。数组的下标。如果这个参数是负数,则表示是从数组尾部算起的元素。
  3. 如果参数为空,则表示是选取数组的全部元素。
let a = [1, 2, 3, 4, 5, 6]
    let hd = a.slice(1, 2)
    a.slice(1, 2)
    console.table(hd) =>[2]
    console.table(a) =>[1,2,3,4,5,6]
  • splice:返回一个新的数组,即是截取的数组。原数组改变,变为截取后的数组
  • splice(a,b) -> 删除功能
  1. a:表示开始的位置
  2. b:表示截取多少个
let a = [1, 2, 3, 4, 5, 6]
    let hd = a.splice(1, 2)
    console.table(hd)  => [1,2]
    console.table(a)  =>[3,4,5,6]
  • splice(a,b,'c','c','...') -> 替换新增
let a = [1, 2, 3]
    a.splice(0, 0, 'aa', 'bb')
    console.table(a) ==>['aa','bb',1,2,3]
    
let a = [1, 2, 3]
    a.splice(0, 1, 'aa', 'bb')
    console.table(a) ==>['aa','bb',2,3]

let a = [1, 2, 3, 4, 5, 6]
    a.splice(0, 2, 'aa', 'bb')
    console.table(a) ==>['aa','bb',3,4,5,6]
    
let a = [1, 2, 3, 4, 5, 6]
    a.splice(1, 0, 'aa', 'bb')

    console.table(a) ==>[1,'aa','bb',2,3,4,5,6]
    
let a = [1, 2, 3]
    a.splice(a.length, 0, 'aa', 'bb')
    console.table(a) ==>[1,2,3,'aa','bb']
  • split, join (拆分和合并数组)
let a = 'a,b,c,d'
let b = a.split(',')
let c = b.join("*")
console.log(b) ===>["a","b","c","d"]
console.log(v) ===> a*b*c*d
  • concat 返回一个新数组
let a = [1,2,3]
let b = [4,5,6]
a = a.concat(b)
console.log(b) ==>[1,2,3,4,5,6]
  • 更简单的方法
// 这就看起来很舒服
a = [...a, ...b]
console.log(a) ===>[1,2,3,4,5,6]
  • copyWithin 复制
  • copyWithin(a,b,c)
  1. 必需。复制到指定目标索引位置。
  2. 可选。元素复制的起始位置。
  3. 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
let a = [1, 2, 3]
a.copyWithin(1, 0, 3)
console.log(a) ==>[1,1,2]
  • 数组的查找
  • 根据实际情况使用
  • indexoOf(a,b) 找到返回下标,找不到返回 -1
  1. a:查找的目标元素
  2. b:查找开始的位置
  • includes 找到返回true,找不到返回false
  • find
let a = [1, 2, 3, 4, 5, 3]
let arr = a.find(item => {
  return item === 3
 })
console.log(arr) ===>2


let arr = a.find(item => {
  return item === 300
 })
console.log(arr) ===>undefined
  • 数组排序
let arr = [1, 3, 2]
    arr = arr.sort((a, b) => {
// -1 从小到大  1 正数 从大到小
     return a - b
    })
    console.log(arr) ===>[1,2,3]

原型(对象属性)

JavaScript 规定,每一个函数都有一盒prototype 对象属性,指向另一个对象(原型链上面的)。prototype(对象属性)的所欲属性和方法,都会被构造函数的实力继承,这意味着,我们可以把那些不变(公用)的属性和方法,直接定义在prototype对象属性上。 prototype 就是调用构造函数所创建的那个实例对象的原型(——proto——)。 prototype 可以让所有对象实例共享它所有包含的属性和方法。也就是说,不必在构造函数重定义对象信息,而是可以直接将这些信息添加到原型中。

let hd ={}
console.log(Object.getPrototypeOf(hd)) // 获取这个对象的原型了
let ly = Object.create(null,{
	name:{
	    value:'信赖杨'
	   }
	})
	console.log(ly)

Object.create 顾名思义 就是创建一个对象,null 就相当于他的父亲。null的时候,就是没有父亲,也就是没有对应的原型。属性只有定义的name属性