JavaScript笔记

&lt; &lt; &gt; &gt;  -----   <<>>
<strong></strong>加粗
<em></em>倾斜
<del></del>删除线
<ins></ins>下划线

1、数组元素转字符串数字-----反之

var arr = [1,2,3,4]   -------------['1','2','3','4']
---
arr.map(String)

var arr = ['1','2','3','4']   -------------[1,2,3,4]
arr.map(Number)

2、判断简化 includes()

if(a===undefined||a===10||a===20||a===null){
	console.log("请重新填写");
}
//可:
if([undefined,10,20,null].includes(a)){
	console.log("请重新填写");
}

3、遍历对象 object.key()语法

 Object.keys(obj2).forEach(function(key){
     console.log(key, obj2[key]);
 })

    // 得到的是: name---a
    //          list---{a:"value",b:"value"}
    //          num----13 

Object.keys、.values()、.entries()的方法

let arr = ['a', 'b', 'c']
        let newArr = []
        for (let index of arr.keys()) {
            console.log(index);

        }
        // 0
        // 1
        // 2
        for (let item of arr.values()) {
            console.log(item);
            // newArr.push(item)
        }
        console.log('newArr----' + newArr);
        console.log(typeof(newArr));
        // 'a'
        // 'b'
        // 'c'
        for (let [index, item] of arr.entries()) {
            console.log(index, item);
        }
        // 0 'a'
        // 1 'b'
        // 2 'c'

        let obj = {
            name: "张三",
            sex: "男",
            age: 20
        }

        for (let key of Object.keys(obj)) {
            console.log(key)
        }
        // name
        // sex
        // age

        console.log(Object.values(obj))
            // ['张三', '男', 20]

        for (let val of Object.values(obj)) {
            console.log(val)
        }
        // 张三
        // 男
        // 20

        for (let val of Object.entries(obj)) {
            console.log(val)
        }
        // (2) ["name", "张三"]
        // (2) ["sex", "男"]
        // (2) ["age", 20]
        for (let [key, val] of Object.entries(obj)) {
            console.log(key, val)
        }
        // name 张三
        // sex 男
        // age 20

4、字符串截取

var str = '50_01'
场景一:截取符号前面所有
let newStr =str.substr(0,str.lastIndexOf("_"))
场景二:截取符号后面所有
let newStr =str.substr(str.lastIndexOf("_") + 1)
场景三:截取从下标为5的两位。
var str = '我的名字叫张三';
console.log(str.substr(5,2));   //张三     
场景四:截取前三位
var str = '我的名字叫张三';
console.log(str.substr(0,3));   //我的名   
场景五.截取掉前三位字符,保留后几位
1.slice方法
var str="abc12345";
console.log(str.slice(3))            //12345
2.substring方法
var str="abc12345";
console.log(str.substring(3));      //12345
场景六:删除后三位
var str="abc12345";
let newStr = str.slice(0, str.length - 3)  //abc12
let newStr = str.substring(0, str.length - 3)  //abc12
let newStr = str.substr(0, str.length - 3)  //abc12
删除后三位
let str="lizhienshinushenhhh"
let newStr = str.substring(str.length-3) 
截取中间两位值
let str="web前端工程师"
let newStr = str..match(/web(\S*)工程师/)[1]
console.log(newStr)//前端

5、取字符的某一位charAt()

let obj="张三"

console.log(obj.charAt(0))    =="张"
console.log(obj.charAt(1))    =="三"

注意:如果obj为null、undefined会报错,所以可以在obj后面加上“?”
在这里插入图片描述
加上“?”这样写要注意版本号,要把这两个升级到2.7.0
在这里插入图片描述
6、检测是否为数组
(1)instanceof 运算符 他可以用来检测是否为数组

 var arr = [];
 var obj = {};
 console.log(arr instanceof Array);    //true
 console.log(obj instanceof Array);    //false

(2)Array.isArray(参数)(H5新增的方法 ie9以上版本支持)

var arr = [];
var obj = {};    
console.log(Array.isArray(arr));    //true
console.log(Array.isArray(obj));    //false

7、大小写转换:
toUpperCase()----------------转大写
toLowerCase()-------------转小写

 var a = 'lizhien';
 var daxie = a.toUpperCase()----------------转大写
 console.log(daxie);//LIZHIEN

 var b = 'LIZHIEN';
 var xiaoxie = b.toLowerCase()-------------转小写
 console.log(xiaoxie);//lizhien

8、 1.forEach() 迭代(遍历)数组

array.forEach(function(currentValue,index,arr));

currentValue:数组当前项的值

index:数组当前项的索引

arr:数组对象本身

//forEcth 迭代(遍历)数组
    var arr = [1,2,3];
    var sum = 0;
    arr.forEach(function(value,index,array){
        console.log('每个数组元素' + value);
        console.log('每个数组元素的索引号' + index);
        console.log('数组本身' + array);
        
        sum += value;
    })
    console.log(sum);    //6

9、2.filter() 筛选数组

array.filter(function(currentValue,index,arr));
  • filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组

    注意:它直接返回一个新数组

  • currentValue:数组当前项的值

  • index:数组当前项的索引

  • arr:数组对象本身

//filter 筛选数组
    var arr = [12,66,4,88,3];
    var newArr = arr.filter(function(value,index){
        // return value >= 20;
        return value % 2 === 0;    //求偶
    })
    // console.log(newArr);   //[66, 88]

    console.log(newArr);   //[12, 66, 4, 88]

过滤数组:
let arr=[
	{id:1,name:'张三',num:10},
	{id:2,name:'李四',num:2},
	{id:3,name:'王五',num:9}
]
let str={id:1,name:"一号"};
let newArr =  arr.filter(x => x.id !== str.id)

10、3.some() 查找元素

array.some(function(currentValue,index,arr));
  • some()方法用于检测数组中的元素是否满足指定条件。通俗点 查找数组中是否满足条件的元素

注意它返回值是布尔值,如果查找到这个元素,就返回true,如果查找不到就返回false.

  • 如果找到第一个满足条件的元素,则终止循环,不在继续查找。
  • currentValue:数组当前项的值
  • index:数组当前项的索引
  • arr:数组对象本身
//some 查找数组中是否有满足条件的元素
    var arr = [10,20,30,40];
    var newArr = arr.some(function(value){
        return value >= 20;
    })
    console.log(newArr);    //true

    var arr1 = ['red','pink','blue'];
    var newArr1 = arr1.some(function(value){
        return value = 'pink';
    })
    console.log(newArr1)   //true

总结

1.filter 也是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来

2.some 也是查找满足条件的元素是否存在 返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环

11、数组扁平化:

let arr=[1, 2, [3, 4],  [5, 4, 3]]

方法一:es6中的flat()
let newArr = arr.flat()
 
方法二:toString() + split()方法
let newArr = arr.toString().split(',').map(item => Number(item))

方法三:join() + split() 实现
let newArr = arr.join(',').split(',').map(item => Number(item))

方法四:扩展运算符实现
while (arr.some(item => Array.isArray(item))) {
      arr = [].concat(...arr);
}
console.log(arr)

方法五:递归实现
let res = [];
   arr.forEach(item => {
       if (Array.isArray(item)) {
           res = res.concat(...item)
       } else {
         res.push(item);
     }
});
console.log(res);

12、分隔符(例如千位,加“,”号)

 function _comma(number) {
     //原生-简便
     // return number.toLocaleString()
      //正则
      // var str = number.toString();
      // var reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
      // return str.replace(reg, "$1,");
      //保留两位小数
      // return number.toFixed(2).toString().replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
      // //保留整数
      // return number.toFixed(0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,");
}
  console.log(_comma(-2012.112)); //-2,012.112

13、在小程序中渲染富文本中图片问题

//解决图片底部空白间隙的问题
//解决 .webp 格式图片在 ios 设备上无法正常显示的问题:
 res.message.goods_introduce = res.message.goods_introduce.replace(/<img /g, '<img style="display:block;" ').replace(/webp/g, 'jpg')

14、在数组中查找对应的对象,使用find

let arr=[{id:1,name:"张三"},{id:2,name:"李四"},{id:3,name:"王五"},{id:4,name:"赵六"}]
let str={id:1,name:"张三"};
const findResult = arr.find((x) => x.id === str.id);
console.log(findResult );// {id: 1, name: "张三"}

15、遍历对象数组中某个(num)属性,求和

let arr=[
	{id:1,name:'张三',num:10},
	{id:2,name:'李四',num:2},
	{id:3,name:'王五',num:9}
]
//第一种方式
 let sum=0
 arr.forEach(item=>sum+=item.num)
 console.log(sum)--------21

//第二种方式使用reduce方法:(0默认为初始值)
let sum = arr.reduce((total, item) => total += item.num, 0)
console.log(sum)--------21

16、repeat方法返回一个新字符串,表示将原字符串重复n次。

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
1、参数如果是小数,会被取整。
	'na'.repeat(2.9) // "nana"

2、如果`repeat`的参数是负数或者`Infinity`,会报错。
	'na'.repeat(Infinity)

3、 如果参数是 0-1 之间的小数,则等同于 0,这是因为会先进行取整运算。0-1 之间的小数,取整以后等于`-0``repeat`视同为 0'na'.repeat(-0.9) // ""

4、参数`NaN`等同于0
	'na'.repeat(NaN) // ""

5、如果`repeat`的参数是字符串,则会先转换成数字。
	'na'.repeat('na') // ""
	'na'.repeat('3') // "nanana"

17、将对象转为数组

let obj = {
    a: 1,
    b: 2,
    c: 3
};
console.log(Object.entries(obj));          //[['a', 1], ['b', 2], ['c', 3]]

18、获取数组中最大值、最小值

const arr = [0, 1, 2, 3];
const min = Math.min(...arr);             ------------------------0
const max = Math.max(...arr);           ------------------------3

19、switch

Operate(c) {
      switch (c) {
        case "shanchu":
        		方法......
          break;
        case "bianji":
        		方法......
          break;
        default:
          return;
      }
    },

20、对象数组根据下标,获取当前数据。

let Arr = [
	{
		Id:1,
		Name:'张三'
	},
	{
		Id:2,
		Name:'李四'
	},
	{
		Id:3,
		Name:'王五'
	},
]

let index = 2//下标值
let obj = Arr .filter((item, i) => i == index)
console.log(obj)   -------------------{Id:3,	Name:'王五'}

21、隐藏手机号、邮箱中间四位

<span>{{ phone | phoneFilter }}</span>     //132****5454
<span>{{ mailbox | mailboxFileter }}</span> 

data

phone: "13244445454",
mailbox:"1903025467@qq.com",

filters.js文件

filters:{
	//手机号过滤器
	phoneFilter(val){
		let reg =/^(.{3}).*(.{4})$/;
		return val.replace(reg, "$1****$2");
	}
	//邮箱过滤器
	mailboxFileter(val){
		let reg=/^(.{3})·*(.{9})$/;
		return val.replace(reg,"$1****$2")
	}
}

22、取数组最后一个元素

let list = [1,3,4,5,6]
let b = list[list.length- 1]    ======> 6

23、数组去重

let arr = [1, 2, 2, 3, 4, 4, 5, 5, 6];
let newArr = [...new Set(arr)];
console.log(newArr ); // 输出: [1, 2, 3, 4, 5, 6]

24、剩余参数 rest

userInfo:{
	name:'小满',
	age:18,
	test:111
}
const {name,age,...rest} = this.userInfo
console.log(rest)    //test:111
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值