JS开发小技巧

    1. 替换字符串中匹配的相同字符
// 匹配第一个相同字符
let str = "Hello world!";
str1 = str.replace("o","666")// 输出:Hell666 world!
// 替换所有相同字符
str2 = str.replace(/\o/g,"777");
// 输出:Hell777 w777rld!
str3 = str.replaceAll("o","888");
// 输出:Hell888 w888rld!
    1. 反转字符串
let str = "Hello world!";
const stringReverse = (str) => str.split("").reverse().join("");
let newStr = stringReverse(str);
console.log(newStr) // 输出:!dlrow olleH
    1. 数字字符串转换成number类型
let num = "123";
// 方法一:
num = +num; // 123
// 方法二:
num = num * 1; // 123

// 对小数优雅的取整
let number = 3.145 | 0;
console.log(number); // 输出:3 
    1. 条件判断给字符变量赋值,也叫短路评估
// str 有值就输出本身,无值输出default str
let str = "";
let newStr = str || "default str";
console.log(newStr); // default str
    1. 通过条件判断增加对象属性
let isAdd = true;
let person = {
	name: "sun",
	age: 28,
	...(isAdd && {work: "chengxuyuan"})
}
console.log(person); // {name: 'sun', age: 28, work: 'chengxuyuan'}
    1. 检查某个属性是否存在对象中
// 4种
let person = {
	name: "sun",
	age: 28
}
console.log(!person.age); // false
console.log("age" in person); // true
console.log(person.hasOwnProperty("age")); // true
console.log(Object.keys(person).indexOf("age")); // 1
    1. 统计一个数组中某个元素出现的次数
let arr = [1, 1, 3, 4, 5, 1, 2, 99, 10];
let newArr = arr.reduce((a, b) => {
	if (b in a) {
		a[b]++;
	} else {
		a[b] = 1;
	}
	return a;
}, {})
console.log(newArr); // {1: 3, 2: 1, 3: 1, 4: 1, 5: 1, 10: 1, 99: 1}
    1. 过滤数组中值为false的元素
const arr = [12, 34, null, 6, 0, false, undefined, "sun"];
const newArr = arr.filter(Boolean);
console.log(newArr); // [12, 34, 6, 'sun']
    1. 数组去重
const arr = [11, 11, 2, 3, 55, 11, 2, 856, 3];
const unique = (arr) => [...new Set(arr)];
let nums = unique(arr);
console.log(nums); // [11, 2, 3, 55, 856]
    1. 获取数组中随机项
const arr = [11, 11, 2, 3, 55, 11, 2, 856, 3];
const randomItem = (arr) => arr[Math.floor(Math.random() * arr.length)];
let item = randomItem(arr);
console.log(item);
    1. 获取数组中最大值
const arr = [11, 11, 2, 3, 55, 11, 2, 856, 3];
const maxNum = (arr, n = 1) => [...arr].sort((a, b) => b-a).slice(0, n);
let max = maxNum(arr, 2);
console.log(max); // [856, 55]
    1. 获取数组中最小值
const arr = [11, 11, 2, 3, 55, 11, 2, 856, 3];
const minNum = (arr, n = 1) => [...arr].sort((a, b) => a-b).slice(0, n);
let min = minNum(arr, 2);
console.log(min); // [2, 2]
    1. 快速实现一个长度为10,并且元素值相同的数组
let newArr = Array(10).fill(666);
console.log(newArr); // [666, 666, 666, 666, 666, 666, 666, 666, 666, 666]
    1. 优化多个条件的if语句
let x = "a";
// 未优化
if(x === "a" || x === "b" || x === "c" || x === "d") {
	console.log("x值不能为空");
}
// 优化
if(["a","b","c","d"].includes(x)){
	console.log("x值不能为空");
}
    1. 对两个数组取交集
let arr1 = [1, 2, 3, 4, 5, 6, 7];
let arr2 = [245, 35, 456, 12, 2, 6, 7];
let arr3 = arr1.filter((item) => arr2.includes(item));
console.log(arr3); // [2, 6, 7]
    1. 数组中有则删除,没有则添加
let arr = [1, 2, 33, 456, 7];
let proccessing = (num) => {
	if (arr.includes(num)) {
		arr.splice(arr.indexOf(num), 1);
	} else {
		arr.push(num);
	}
}
proccessing(32);
console.log(arr); // [1, 2, 33, 456, 7, 32]
proccessing(32);
console.log(arr); // [1, 2, 33, 456, 7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个......

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值