js基础知识(4)

js基础知识

数组的方法

数组的增删改

1.push()
方法的定义:
		- 向数组末尾增加内容
方法的参数:
		- 传递多个值
方法的返回值:
		- 新增数组的length
原有数组是否发生改变:
		- 是
let ary = [12,23,34];
console.log(ary.push(12,66,'erYa'))//6    方法的返回值
console.log(ary)//[12,23,34,12,66,'erYa']
//ary[ary.length] = 'xxx'    //增
ary = []
2.unshift()
方法的定义:
		- 向数组开头增加内容
方法的参数:
		- 传递多个值
方法的返回值:
		- 新增数组的length
原有数组是否发生改变:
		-  是
let ary = [12,23,34];
console.log(ary.unshift(12,66,'erYa'))//6    方法的返回值
console.log(ary)//[12,66,'erYa',12,23,34]
3.pop()
方法的定义:
		- 向数组末尾删除一项内容
方法的参数:
		- 无
方法的返回值:
	- 	删除的那一项
原有数组是否发生改变:
		- 是
let ary = [12,23,45];
console.log(ary.pop())//45
console.log(ary)//[12,23]
//ary.length--
//ary.length-=2
//ary.length = 0 //清空数组
4.shift()
方法的定义:
		- 向数组开头删除一项内容
方法的参数:
		- 无
方法的返回值:
		- 删除的那一项
原有数组是否发生改变:
		- 是
let ary = [12,23,45];
console.log(ary.shift())//12
console.log(ary)//[23,45]
5.splice()
方法的定义:
		- 实现数组增删改
方法的参数:
		- 不一定
方法的返回值:
		- 一个新的数组,数组里存储的是删除的内容
原有数组是否发生改变:
		- 是
//(n,m):从索引n开始,删除m个,
//(n)如果只传一个参,从索引n开始删除到末尾
//()如果不传参,什么都不干。返回空数组
//(n,m,x)如果传三个参,及三个以上的参,从索引n开始,删除m个,用x替换,可以插入无数个。
//(n,0,x)从索引n开始删除0个,把x插到索引n对应值的的前边
let ary = [12,23,45,'erYa'];
console.log(ary.splice(1,2))//[23,45]
console.log(ary)//[12,'erYa']
console.log(ary.splice(0,n))//删除数组开头的任意几项
console.log(ary.splice(ary.lengh-1,1))//删除数组的最后一项
console.log(ary.splice(ary.lengh-n,n))//删除数组的最后n项
console.log(ary.splice(0))//清空数组     [12,23,45,'erYa']
console.log(ary)//[]
   // (n,m):从索引n开始,删除m个
   // (n):如果只传一个参数,那就是从索引n开始,删除到末尾
   let ary  =[12,23,45,'erYa'];
//    console.log(ary.splice(0,1)) // [12] // 删除数组的开头一项
//    console.log(ary.splice(0)); // 清空数组,从索引0开始,删除到末尾
        // console.log(ary.splice()) // [] 啥也不干
        // console.log(ary.splice(3,0)); // [] 啥也不干
//    console.log(ary); // [12,'erYa']
   // (n,m,x):从索引n开始,删除m个,用x替换
   // (n,0,x):从索引n开始,删除0个,把x放到索引n对应的值的前面
        // console.log(ary.splice(1,2,'erGou', 'gouDan')); // [23, 45]
        // console.log(ary.splice(0,0,'daGou')) // [] 项数组开头 增加一项
        // console.log(ary.splice(ary.length,0,'huangRong')) // 向数组末尾增加一项
        // console.log(ary.splice(-1,2))
        console.log(ary) // [12, "erGou", "gouDan", "erYa"]

数组增删方法

删除数组最后一项
ary.length--
pop
splice(ary.length-1)
删除数组第一项
shift
splice(0,1)
数组开头增加
unshift
splice(0,0,x)
[x,...ary]
数组末尾增加
push
ary[ary.length]='xxx'
splice(ary.length,0,x)

数组的截取、拼接

1.截取slice()
方法的定义:
		- 实现数组的截取(查询)
方法的参数:
		- 不一定
方法的返回值:
		- 一个新的数组,数组里存储的是截取的内容
原有数组是否发生改变:
		- 否
(n,m):从索引n开始,截取到索引m(索引m不算)
let ary = ['siMao','sanMao','erYa',12,23,45]
//(n,m):从索引n开始,截取到索引m(索引m不算)
console.log(ary.slice(1,2)) // ['sanMao']
console.log(ary.slice(2,5)) // ["erYa", 12, 23]
console.log(ary.slice(0,ary.length)) // 克隆数组
console.log(ary.slice(0))// 克隆数组   从索引0开始,截取到末尾
console.log(ary)
2.拼接concat()
方法的定义:
		- 实现数组的拼接
方法的参数:
		- 可以是多个值
方法的返回值:
		- 拼接后的新数组
原有数组是否发生改变:
		- 否
     let ary =[12,23,45,45];
     console.log(ary.concat([12,23],[66],true)) //[12, 23, 45, 45, 12, 23, 66, true]
     console.log(ary.concat()) // 克隆数组
     console.log(ary)

数组的排序

1.reverse()//倒序
方法的定义:
		- 实现数组的倒序
方法的参数:
		- 无
方法的返回值:
		- 排序后的数组
原有数组是否发生改变:
		- 是
let ary = [12,23,45,67,13];
console.log(ary.reverse()); // []
console.log(ary)
2.sort()//排序
方法的定义:
		- 实现数组的排序
方法的参数:
		- 无,可以传一个函数
方法的返回值:
		- 排序后的数组
原有数组是否发生改变:
		- 是
如果没有传参,按照数组每一项的第一位的大小排列,从小到大排列
如果传一个函数
(a,b)=>{return a-b},从小到大排
(a,b)=>{return b-a},从大到小排
    // 如果不传参,只能排列一位数的数组(按照左边第一位从小到大排列)
    // let ary = [5,2,1,3,5];
    // console.log(ary.sort())
    // console.log(ary)
    let ary  =[29,31,114,9,20];
    // console.log(ary.sort())
    // 传一个函数
    console.log(ary.sort( (a,b)=>{
        // 如果a-b那就是从小到大排列,反之(b-a)就是从大到小排列
        return a-b
    } ))

检测数组中是否包含某一项

1.indexOf()
方法的定义:
		- 检测数组中是否包含某一项
方法的参数:
		- 一个参:检测的那一项;两个参:检测的那一项,开始检测的位置
方法的返回值:
		- 如果检测到该项,就返回该项的索引,如果没有,就返回-1
原有数组是否发生改变:
		- 否
找的是检测的值第一次出现的位置
(n,m):n是被检测的值,m是开始检测的位置
(n):从头开始检测
不传参 按没有找到的处理
    // indexOf是找的检测的值第一次出现的位置
    // (n,m):n是被检测的值,m是开始检测的位置
    //(n):从头开始检测
    let ary = [12,23,45,23,45,36];
    console.log(ary.indexOf(23,2)) // 3
    console.log(ary.indexOf(23)) // 3
    console.log(ary.indexOf(89)) // -1
2.lastIndexOf()
方法的定义:
		- 检测数组中是否包含某一项
方法的参数:
		- 一个参:检测的那一项;两个参:检测的那一项,检测到的位置
方法的返回值:
		- 如果检测到该项,就返回该项的索引,如果没有,就返回-1
原有数组是否发生改变:
		- 否
找的是检测的值最后一次出现的位置
(n,m):n是被检测的值,m是检测的最后一个位置
(n):检测到末尾
不传参 按没有找到的处理
    // lastIndexOf: 是找的检测的值最后一次出现的位置
    // (n,m):n是被检测的值,m是检测到的位置
    // (n):检测到末尾
    console.log(ary.lastIndexOf(23,2)) // 1
    console.log(ary.lastIndexOf(23)) // 1
3.includes()
方法的定义:
		- 检测数组中是否包含某一项
方法的参数:
		- 检测的值
方法的返回值:
		- 如果检测到该项,就返回true,如果没有,就返回false
原有数组是否发生改变:
		- 否
let ary  =[12,23,45,66];
console.log(ary.includes(12))
console.log(ary.includes(122))

数组转字符串

join()
方法的定义:
		- 把数组以特定的分隔符 转换为字符串
方法的参数:
		- 字符串格式的分隔符
方法的返回值:
		- 字符串
原有数组是否发生改变:
		- 否
如果不传参,分隔符就是逗号
let ary = [12,23,45,67];
console.log(ary.join('%'))//'12%23%45%67'
console.log(ary)//[12, 23, 45, 67]

遍历数组

1.forEach()
方法的定义:
		- 遍历数组
方法的参数:
		- 函数
方法的返回值:
		- undefined
原有数组是否发生改变:
		- 否
如果不传参,分隔符就是逗号
ary.forEach((item,index)=>{
    item为数组的每一项
    index为每一项的索引
    数组有多少项就循环多少次
})
//let ary = [12,23,45,67,34];
//ary.forEach((item,index)=>{})
        let ary = [12,23,34,45,56,67,78,89,NaN,true]
        let fn = (...arg)=>{
            let total = null;
            console.log(arg);
            arg.forEach((item,index)=>{
                console.log(item)
                if(!isNaN(Number(item))){
                    console.log(3)
                    total+=item
                }
            })
            return total
        }
        console.log(fn(...ary)


 		let ary  =[1,true,2,NaN,3];
        // ary.forEach((item, index)=>{
        //     // item是数组的每一项
        //     // index是每一项的索引
        //     // 有多少项就循环多少轮
        //     console.log(item, index)
        // })
        // 任意数求和
        let fn = (...arg)=>{
            let total = null;
            arg.forEach((item,index)=>{
                // item是数组的每一项
                // index是数组的每一项的索引
                // 数组有多少项就会循环多少轮
                if(!isNaN(Number(item))){
                    total+=item
                }
            })
            return total
        }
        console.log(fn(1,true,2,NaN,3))

)

2.map()
方法的定义:
		-  遍历数组
方法的参数:
		- 函数
方法的返回值:
		- 改变后的新数组
原有数组是否发生改变:
		- 否
//     ``:反引号(模板字符串)${}里可以识别变量
//    let ary = [1,2,3,4,5]
// 修改数组的值
//    let num = ary.map((item, index)=>{
            // item是数组的每一项
//    // index是每一项的索引
      // 数组有多少项就循环多少次
      //     return `我是第${item}个li`
      //    })
      //    console.log(num)
      //    console.log(ary)
    let box = document.getElementById('box');
    // 获取ul元素
    let ary = [1, 2, 3, 4, 5];
    // 遍历数组,把数组处理成我们想要的标签结构
    let newAry = ary.map(item => {
        // return `<li style="background:black" class="box">我是第${item}个li</li>`
        // 模板字符串,${}里可以识别变量
        return '<li class="box">我是第' + item + '个li</li>';
        // 字符串拼接
     })
     console.log(newAry);
     // ["<li class="box">我是第1个li</li>", "<li class="box">我是第2个li</li>", "<li class="box">我是第3个li</li>", "<li class="box">我是第4个li</li>", "<li class="box">我是第5个li</li>"]
     let str = newAry.join('');
     console.log(str);
     // <li class="box">我是第1个li</li><li class="box">我是第2个li</li><li class="box">我是第3个li</li><li class="box">我是第4个li</li><li class="box">我是第5个li</li>
         box.innerHTML = str;
     // 把这些字符串插入到ul元素当中

字符串的方法

字符串的所有方法都不改变原字符串
返回值都是你处理之后的字符串
    // 字符串的方法
    // let str = 'asdfgh';
    // 字符串有length代表字符串的长度
    // str[0] // 'a'
    // str[str.length-1]
    // console.log(str)

字符串的获取

1.charAt()
含义
		- 通过索引获取对应的字符串
		- charAt(n):通过索引或对应的字符串
  		-   字符串的所有方法都不改变原字符串
		-   返回值都是你处理之后的字符串
    字符串的获取
        // 1、charAt(n):通过索引获取对应的字符串
        // let str = 'absdfgh';
        // console.log(str.charAt(0)) // 'a'
        // console.log(str[0])
        // console.log(str.charAt(100))// ''
        // console.log(str[100]) // undefined
2.charCodeAt()
含义
	- 	通过索引或对应的ASCII码(unicode),获取对应的字符串
charCodeAt():通过索引获取对应的ASCLL码(unicode)
let str = 'absdfgh';
String.fromCharCode(98):ASCLL转换为对应的字符
console.log(str.charCodeAt(1))

字符串的截取

1.substr()
substr():0开始截取到末尾
substr(0):0开始截取到末尾
substr(n,m):从索引n开始截取m个
let str = 'absdfgh';
//substr(n,m):从索引n开始,截取m个
console.log(str.substr(1,3)) //'bsd'
console.log(str.substr(0)) // 克隆 截取到末尾
console.log(str.substr()) // 克隆 截取到末尾
2.substring()
substring(n,m):从索引n开始截取到索引m,不包括索引m
substring(0):0开始截取到末尾
substring():0开始截取到末尾
//substring(n,m):从索引n开始,截取到索引m(不包括m对应的那一项)
        let str = 'absdfgh';
        console.log(str.substring(1,3)) // 'bs'
        console.log(str.substring(0)) // 克隆 截取到末尾
        console.log(str.substring()) // 克隆 截取到末尾
3.slice()
支持负数,遇到负的参数时,拿参数加length,获取对应索引值
slice(n,m):从索引n开始截取到索引m,不包括索引m
slice(0):0开始截取到末尾
slice():0开始截取到末尾
//slice(n,m)从索引n开始,截取到索引m(不包括m对应的那一项)[支持负数:把参数加上length]
let str = 'absdfgh';
console.log(str.slice(-5,-1)) // 'sdfg'

字符串转数组

split()

含义
把字符串以特定的分隔符转数组

//split():把字符串以特定的分隔符转数组
let str = 'as|da|sd|asd'
console.log(str.split('|')) //["as", "da", "sd", "asd"]
console.log(str.split('')) //["a", "s", "|", "d", "a", "|", "s", "d", "|", "a", "s", "d"]
let str = 'sasasasas';
console.log(str.split('a').join('')) //  ["s", "s", "s", "s", "s"] => 'sssss'

字符串中的替换

replace()
	replace(n,m):把字符串中的n替换为m(只替换第一个)
	replace(n,m):把字符串中的n替换为m(只替换第一个)
//     let str = 'asdsfsgh';
//     console.log(str.replace('s', '$').replace('s', '$'))
//     console.log(str.replace(/s/g, '$')) // 全部替换
//     console.log(str.replace('z','x')) //如果替换不成功,返回原字符串

检测字符串中是否包含某一项

1.indexOf()
方法的定义:
		-	检测字符串中是否包含某一项
方法的参数:
		- 	一个参:检测的那一项;两个参:检测的那一项,开始检测的位置
方法的返回值:
		-  如果检测到该项,就返回该项的索引,如果没有,就返回-1
原有字符串是否发生改变:
		- 否
找的是检测的值第一次出现的位置
		(n,m):n是被检测的值,m是开始检测的位置
		(n):从头开始检测
		不传参 按没有找到的处理
2.lastIndexOf()
方法的定义:
			- 检测字符串中是否包含某一项
方法的参数:
		- 一个参:检测的那一项;两个参:检测的那一项,检测到的位置
方法的返回值:
		- 如果检测到该项,就返回该项的索引,如果没有,就返回-1
原有字符串是否发生改变:
		- 否
找的是检测的值最后一次出现的位置
		(n,m):n是被检测的值,m是检测的最后一个位置
		(n):从头开始检测
		不传参 按没有找到的处理	字符串大小写转化
1.toUpperCase()
转大写
2.toLowerCase()
转小写

字符串去空格

1.trim()
去空格
2.trimLeft()
去左空格
3.trimRight()
去右空格
字符串实例:
处理字符串格式的时间
// 把'2019-1-2 17:46' 改为 '2019年11月12日 17分46秒'
/* 这是不足十,补零的方法
// function addZero(val){
//     if(val.length === 1){
//         return '0'+ val
//     }
//     else {
//         return val
//     }
// }
*/
let addZero = val => val.length === 1 ? '0' + val : val;
let str = '2019-1-2 17:46' // '2019年11月12日 17分46秒'
// str = str.replace('-', '年').replace('-', '月').replace(' ', '日 ').replace(':', 
'时') + '分'
// console.log(str)//  2019年11月12日 17时46分
let y = str.indexOf('-');
let m = str.lastIndexOf('-');
let d = str.indexOf(' ');
let year = str.substring(0, y);
let month = str.substring(y + 1, m);
let day = str.substring(m + 1, d);
// console.log(year, month, day)
let res = addZero(year) + '年' + addZero(month) + '月' + addZero(day) + '日'
console.log(res)

Math数学对象

1.圆周率
Math.PI
2.取绝对值
Math.abs()
		Math.abs(-1) // 1
3.向上取整
Math.ceil()
		console.log(Math.ceil(3.0))
4.向下取整
Math.floor()
		console.log(Math.floor(3.01))
5.取最大值
Math.max()
		取一堆数里的最大值     取不上就是NaN    比较的几个值中有NaN也是NaN
		console.log(Math.max(...[12, 23,34 ,56]))
		console.log(Math.max(true, false, null))
		console.log(Math.max(true, false, null,NaN))
6.取最小值
Math.min()
		取一堆数里的最小值     取不上就是NaN    比较的几个值中有NaN也是NaN
		console.log(Math.min(...[12, 23,34 ,56]))
7.四舍五入
Math.round()
		console.log(Math.round(3.5))
8.开平方
Math.sqrt()
		console.log(Math.sqrt(9))//3
		console.log(Math.round(Math.sqrt(8)))//3
9.取幂
Math.pow()
取幂有两个参,第一个参为要取幂的数据,第二个参为取几次幂
console.log(Math.pow(2, 3))
console.log(Math.pow(2,10)) // 1024
10.取随机数 0~1之间
Math.random()
		取n到m之间的随机整数,包括n跟m
		Math.round(Math.random()*(m-n)+n)
		console.log(Math.round(Math.random()))
		//取n到m之间的随机整数(包括n和m)
Math.round(Math.random()*(m-n)+n)
//取3到5的随机整数,(包括3和5)
console.log(Math.round(Math.random()*(2)+3))
        // - 1、PI:3.1415926 获取圆周率周派
        // - 2、abs():给一个数取绝对值
        // - 3、ceil(): 向上取整
        // - 4、floor(): 向下取整
        // - 5、round(): 四舍五入
        // - 6、max(): 一组数的最大值
        // - 7、min(): 一组数的最小值
        // - 8、sqrt(): 开平方
        // - 9、pow(n,m): 求一个数的多少次幂(n为幂的值,m为幂的次方)
        //     +   1024b=>1kb
        //         1024kb=>1mb
        //         1024mb=>1Gb
        //         1024Gb=>1Tb
        // - 10、random: 获取一个随机数

Date的实例

Date的用法

 Date 是一个函数(类),我们使用的是他new出来的实例对象,有很多属性方法供我们使用。
let time = new Date();//获取当前时间   获取的是电脑的本地时间,不能用作比较重要的计时,或者获取时间等操作
let year = time.getFullYear();//获取年
let month = time.getMonth()//获取月    0~11,所以要  +1
let date = time.getDate()//获取日
let day = time.getDay()//获取星期      0--周日  
let hour = time.getHours()//获取时
let min = time.getMinutes()//获取分
let sec = time.getSeconds()//获取秒
let mill = time.getMilliseconds()//获取秒
let sss = time.getTime();//时间戳,它是现在距离1970年1月1日00时00分00秒的时间差(毫秒)
// console.log(time,year,month,date,day,hour,min,sec,mill)
// let cur = year + '年' + month+'月'+date+'日'+date+'时'+min+'分'+sec+'秒'
// console.log(cur)
// console.log(sss)
let time = new Date('2018-11-13 13:23:56')
console.log(time.getFullYear())
console.log(time)

发布了17 篇原创文章 · 获赞 23 · 访问量 380

猜你喜欢

转载自blog.csdn.net/wang_js_amateyr/article/details/103294329