JavaScript内置类常见操作和高级函数

JavaScript内置类

1.原始类型的调用方法

原始类型的属性?

var name = "Hello World"

console.log(name.length)
console.log(name.split(" "))

var num = 2.54432
num = num.toFixed(2)

JS的原始类型并非是对象类型,没办法获取属性或者调用方法。

但是JS为了让基本数据类型获取属性和调用方法,对其等装了对应的包装类型。

自动创建对象 new string,但是这些操作是不可见的。

常见的包装类型有:N ,S,S,Bigint…

2.Number类型的使用:
// Number的构造函数 -- > window.Number

类方法是调用类,实例方法是通过具体对象来调用

1.类属性,也叫做静态属性
var num = 123 // new Number(num)
console.log(Number.MAX_VALUE)
console.log(Number.MIN_VALUE)
console.log(Number.SAFE_INTEGER)
console.log(Number.MIN_SAFE_INTERGER)


2.实例方法instance,只能通过对象来调用了
var num = 3.1415926
console.log(num.toString( ),type of num.toString( ))

var num = 1000
console.log(num.toString(2)) // 转成二进制
console.log(123..toString(2)) // ".."语法

var pi = 3.1415926
console.log(pi.toFixed(2)) //格式化一个数字,保留digits位的小数,字符串类型

3.类方法 
var num1 = "123.321"
console.log(Number(num1).toFixed(0))
console.log(Number.parseInt(num1))
console.log(Number.parseFloat(num1))

// window对象上面
3.Math是内置对象,不是构造函数
var num = 3.55

Math.pi
console.log(Math.floor(num))
console.log(Math.ceil(num))
console.log(Math.roung(num))
console.log(Math.random( )) [0,1)

需求:生成[5~50)的随机数
var randomNum = Math.floor(Math.random( )*45) + 5
算法:

console.log(Math.pow(x,y))
4.String类型

属性:

var message = "Hello World"
1.length
 message.length

2.访问字符串中某个位置的字符:
console.log(message[4])
console.log(message.chatAt(4))

3.遍历
for (var i = 0; i < message.length; i++){
console.log(message[i])
}

for...of遍历,对象不支持for...of,和迭代器有关,对象不可迭代;可迭代:字符串,数组
for (var char of message){
console.log(char)
}
5.String修改字符串

1.message所有字符变成大写

var message = "Hello World"
var message1 = message.toUpperCase()
或
message = message.toUpperCase

console.log(message)
console.log(message1)

2.小写 toLowerCase

3.查找字符串,判断一个字符串中是否有另一个字符串

var message ="My name is why"
var name = "why"

indexOf(SearchString,fromIndex):
var index = message.indexOf(name)
console.log(index)
搜索到,搜索字符串所在的索引位置;
没有搜索到,返回-1if (message.indexOf(name)) !== -1) {
console.log("message中包含name")
} else {
console.log("message中不包含")
}

4.包含/开头/结尾

ES6中判断包含关系 .includes()
ES6是否以xxx开头 .startsWWith()
............... .endsWith()

5.替换字符串

var newMessage = message.replace("why","kobe")

var newMessage = message.replace("why",function(){
    return newMessage.toUpperCase()
})
console.log(nweMessage)

6.获取子字符串

slice(start,end) 不含end 允许负值
substring(start,end) 不含end
substr(start,length) 从start开始获取长为length的字符串

console.log(message.slice(3,7))

7.字符串的拼接:链式调用

var newString = str1.concat(str2,str3).concat(str4)
console.log(newString)

8.删除首尾的空格

console.log("  why  ",trim())

9.字符串的切割

var message = "abc-cba-nba-mba"
var items = message.split("-")
console.log(items)

var newMessafe = items.join("*") 把数组每个元素拼接成字符串
console.log(newMessage)
6.数组(Array)

1.创建

var names = ["why","kobe","james","curry"]

var products = [
  { name:"鼠标",price:98 },
  { name:"键盘",price:100 },
]

2.创建

var arr1 = new Array()
var arr2 = new Array("abc","cba","nba")
console.log(arr1,arr2)

var arr3 = new Array(5) // ? 只传入数字,创建对应长度的数组 
console.log(arr3,arre[0])

3.通过索引访问元素

console.log(names[0]) //第一个元素
console.(names[names.length-1]) //最后一个元素

console.log(names.at(0))

4.新增数组的元素

在数组的尾部添加或删除元素:push方法 
names.push("why","kobe")
在最后的位置删除元素:pop方法,只能删1个
names.pop()

在数组的头部添加和删除元素(会改变索引,效率较低)
添加,unshift方法
names.unshift()

删除,shift方法
names.shift()

5.在任意位置添加/删除/替换元素

//arr.splice方法可做所有事情,且修改的原数组。


参数一,start,从什么位置开始操作元素
参数二,删除元素的个数

names.splice(1,2)

参数三,新增元素,这时候参数二为0,表示添加
name.splice(1,0,"why")

替换元素
name.splice(1,2,"why","kobe")  //spilice方法,修改原数组

6.length 长度,可赋值

names.length = 10
清空数组: arr.length = 0;

7.数组的遍历

 1. 普通的for循环
 
 2. for...in 拿到索引和元素
  for index (对象中是key)in names{
      names[index]
  }
      
 3. for...of 只拿到元素,不拿到索引
  for (var item of names){
      
  }

8.修改数组

删除 slice:  names.slice(1,2)  // 和splice不同,slice方法,不会修改原数组,且不包括end。 从哪里开始截,截到哪里。


拼接数组 concat: var newNames2 = names1.concat (names2,names3)
join方法转字符串拼接 :console.log(names.join("-"))

9.查找元素,如果可以找到返回索引,没有找到返回-1

1. indexOf: console.log(names.indexOf("nba"))
 数组中存放的是原始类型:可以中找到,返回对应的索引。
 数组中存放的是对象类型:查找的是索引号下的对象内容。
 

2. 复杂类型: 遍历 for循环 + if 语句判断 
缺点:空对象不好寻找,且在堆内存创建空间
 
3. 数组的find方法,高阶函数:var stu = students.find()
var stu = students.find(fucntion(){item => item.id === 101}) 箭头函数
 
4. includes: names.includes("nba")

10.findindex查找元素的索引

 var findIndex = names.findIndex(function(item,index,arr){
  return item === "nba"
  })
箭头函数写法
var findIndex =  names.findIndex (item => item === "nba")
console.log(findIndex)

11,数组的排序和反转

冒泡/插入/选择/快速/希尔/堆
Sort 谁小谁排在前面,升序: nums.sort(function(item1,item2){
    return item1 - item2
    或者
    return item2 - item1
})

降序:console.log(nums.reverse())

12.复杂类型的排序

student.sort(function(item1,item2)){
             item1.age - item2.age
             })
console.log(students)
7.forEach和回调
names.forEach(function(item,index,name)) {

console.log("----",item,index,names)
}

hyForEach

8.Find
  var stu = students.find(function(item){
  if (item.names === "why" ) return true
  })
  console.log(stu)

或者箭头函数
  var stu = students.find(item => item.names === "why")
  console.log(stu)

hyForFind

9.Filter 过滤
取偶数:
1.for循环
2. 
var newNums = nums.filter(function(item)) {
          return item % 2 === 0     
               })
   console.log(newNums)
 返回ture自动加到新数组,返回false
10.Map映射
var nums = [11,20,55,100,88,32]
var newNums = nums.map(funciton(item)){
    return item * item
})
console.log(newNums)
11.Reduce 累加
1.for循环
var nums = [11,20,55,100,88,32]
var result = 0
for (var  item of nums) {
    result += item
}
console.log(result)

2.nums.reduce(function(preValue,item){
    
}0)

item/index/arr

链式调用:过滤所有的偶数,映射所有偶数的平方,并且计算他们的和

var total = nums.filter(function(item){
return item %2 === 0
}).map(function(item){
return item * item
}).reduce{function(preValue,item){
return preValue + item
},0)

↑箭头函数写法:

var total = nums,filter(item => item % 2 === 0)
                  .map (item => item * item)
                  .reduce(preValue,item) => preValue + item,0)

12.创建Date对象的方式

格式转换:
new Date().toISOString
new Date().toDateString

YYYY-MM-DDTHH:mm:ss.sssZ

var year = date.getFullYear() 同时可以修改
...


转换成时间戳:
当前时间:
var timestamp1 = Date.now()
console.log(timestamp1)

指定时间获取时间戳
var date = new Date(timeString)
var timestamp2 = date.getTime() 或者date.valueOf()
+new Date()

类方法,类名?直接转换
var timestamp = Date.parse(timeString)
console.log(timestamp)

DOM 文档对象模型和BOM 浏览器对象模型

DOM:将页面所有内容表示为可以修改的对象

document.body,children[n]

BOM:由浏览器提供的用于处理文档之外的所有内容的其他对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值