- 代码细节
- 数组
- 数组排序
- 生成26个数值为0的数组
- 数组转换成字符串
- 数组中插入某个元素
- 声明一个二位数组
- 利用扩展运算符将数组转为用逗号分隔的参数序列
- 利用reduce函数求数组的和
- 获取数组的中间元素
- 字符串
- 获取字符的Unicode编码
- 遍历字符串
- number类型转换成字符串数组
- 利用正则表达式去掉字符串中非字母
- 利用扩展字符串拆分字符:
- 获取子字符串
- 变量匹配正则
- 对象
- 遍历字符串并统计相应字符个数
- 对象中的某个属性是否存在
- 获取对象的长度
- 方法
- 得两数之间随机数(包含两数)
- 通过`Number.toString([radix])`将数字转换成某进制显示
- 通过`parseInt`将某进制字符串转换成十进制数
- 交换数据
- 获取进位数 余数
代码细节
数组
1、遇到数组有关的题目,需要判断其边界条件
数组排序
//数组正向排序
nums.sort(function(a,b){
return a - b
})
生成26个数值为0的数组
const characters = Array(26).fill(0)
数组转换成字符串
const key = arr.join()
const str = arr.toString()
数组中插入某个元素
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum', 'guitar');
// 运算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// 被删除的元素: [], 没有元素被删除
声明一个二位数组
const memo = []
for (let i = 0;i <n;i++){
memo.push([])
}
//或者 生成一个mxn的数组
const dp = Array(m).fill().map(item => Array(n).fill(0))
利用扩展运算符将数组转为用逗号分隔的参数序列
console.log(...[1, 2, 3])
// 1 2 3
console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5
利用reduce函数求数组的和
let arr = [1,2,3]
let n = 6
console.log(arr.reduce((sum, item) => sum + item , 0) === n); //true
获取数组的中间元素
let mid = nums.length >> 1
字符串
获取字符的Unicode编码
- 获取编码数:
charCodeAt(index)
遍历字符串
// 定义两个指针
let left = 0
let right = s.length - 1
//遍历字符串
while(left < right){
if(s[left] !== s[right]){
return false
}
left++
right--
}
number类型转换成字符串数组
let array = number.toString()
利用正则表达式去掉字符串中非字母
\W查找非单词字符
s = s.toLowerCase().replace(/[\W_]/g,"")
利用扩展字符串拆分字符:
let s = "anagra"
console.log([...s]);
输出为:['a', 'n', 'a', 'g', 'r', 'a']
然后可以进行字符的排序:
[...s].sort()
输出:['a', 'a', 'a', 'g', 'n', 'r']
通过[...s].sort().join('')
形成字符串
获取子字符串
str.substr(start,len) // 开始截取字符的索引 len 截取的子字符串的长度
str.slice(start,finish) //参数为截取字符串的开始索引和结束索引
alert( str.slice(0, 5) ); // 'strin',从 0 到 5 的子字符串(不包括 5)
//与 slice 几乎相同,但它允许 start 大于 end。
str.substring(start [, end])
let str = "stringify";
// 这些对于 substring 是相同的
alert( str.substring(2, 6) ); // "ring"
alert( str.substring(6, 2) ); // "ring"
// ……但对 slice 是不同的:
alert( str.slice(2, 6) ); // "ring"(一样)
alert( str.slice(6, 2) ); // ""(空字符串)
变量匹配正则
- 需要设置g,全局匹配,不然只匹配一个
replaceHtml = '<b style="font-weight: bold; background-color: yellow;">' + old + '</b>'
newreg = new RegExp(replaceHtml, "g")
newText = text.innerHTML.replace(newreg, old)
- 用
str.match
方法判断是否匹配上某个字符串
对象
- JavaScript 的对象有一个需要注意的特性:能够被访问任何属性,即使属性不存在也不会报错!读取不存在的属性只会得到
undefined
遍历字符串并统计相应字符个数
need = {}
for (let a of t) {
// 统计需要的字符
need[a] = (need[a] || 0) + 1;
}
对象中的某个属性是否存在
c in need // true or false
need.att === undefined //true 意思不存在att这个属性
获取对象的长度
need = {}
console.log(Object.keys(need).length);
方法
得两数之间随机数(包含两数)
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
}
https://developer.mozilla/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random
通过Number.toString([radix])
将数字转换成某进制显示
num = 35
let Num2Str = num.toString(2) //100011 字符串形式的二进制表达
let Num2Str = num.toString(8) // 43 八进制
通过parseInt
将某进制字符串转换成十进制数
function base10(str) {
//parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,
//radix 是2-36之间的整数,表示被解析字符串的基数。
return parseInt(str,2)
//将str看做二进制数,返回十进制数
}
console.log(base10('11000000')); //192
交换数据
[list[i], list[i + 1]] = [next, current];
获取进位数 余数
let num = 16
console.log(Math.floor(num / 10)); //1
console.log(num % 10); //6
更多推荐
【JavaScript】力扣刷题用到的一些小细节
发布评论