创建m*n的二维数组
let arr=Array(m).fill().map(item=>Array(n))
js创建二维数组,没有let arr=[ ][ ]这种字面量形式。
正确做法是:
先创建一个长度为m的一维数组,然后用fill()填充,fill()不带参数的情况下,填充的值是undefined。然后将这个一维数组中的每一个item,映射成为一个长度为n的数组,即可创建一个m*n的二维数组。
两个字符相减
let sub='b'.charCodeAt()-'a'.charCodeAt() //=1
js中,两个字符相减时,不会自动转换成ASCII码,如果直接计算’b’-‘a’,则输出的结果时NaN。需要使用charCodeAt()方法将字符转换成对应的ASCII码值。
在一维数组中添加一维数组作为其item
例如:对于res=[ ],path=[1,2,3],想要将path添加入res,最终为:res=[[1,2,3]]
方法是:
res.push([...path]) //浅拷贝一份path存入res中
!!!不能直接res.push(path),这样是将path地址的引用存入到了res中,即res[0]和path指向同一地址空间,当path中的值发生变化时,res[0]也会跟着改变
获取一维数组中的最大值
获取一维数组nums中的最大值
let max_num=Math.max(...nums)
获取子数组
获取数组nums=[1,2,3,4,5]中的子数组[3,4]
通过slice方法,注意:slice的范围是左闭右开的
let res=nums.slice(2,4) //res=[3,4]
将Map和Set转换成Array
方法一:Array.from
var set = new Set([1, 2, 3, 3, 4]);
Array.from(set) //输出[1,2,3,4]
var m = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(m); //输出:[ [1, 2], [2, 4], [4, 8] ]
方法二:扩展运算符…
var set = new Set([1, 2, 3, 3, 4]);
[...set] //输出[1,2,3,4]
var m = new Map([[1, 2], [2, 4], [4, 8]]);
[...m] //输出:[ [1, 2], [2, 4], [4, 8] ]
定义长度为m的数组
let arr=Array(m).fill(0)
splice
用于删除数组中指定位置的元素,以及在数组中添加新元素
splice(操作的元素的下标,删除元素的个数,添加的新元素值)
//删除数组中指定位置的元素
arr=[10,11,12]
arr.splice(1,1) //arr=[10,12]
//在数组中指定位置添加元素
arr=[10,11,12]
arr.splice(1,0,5) //arr=[10,5,11,12]
//删除数组中的第一个元素,并在第一个元素的位置插入2,3
arr=[10,11,12]
arr.splice(1,1,2,3) //arr=[10,2,3,12]
ACM模式刷题
主要在于记住以下几点:
单行输入:line=readline()
多行输入:while(line=readlines()){}
输入是以字符串的形式存储到line的,因此,要取出输入的数字:
1、分隔。需要通过lines=split(’ ')将多个数字分隔开,存储到一个数组中
2、转数字。数组line中目前存储的是字符串的形式,需要通过parseInt(lines[0])转换成数字
多行输入
1 5
10 20
while (line = readline()) { //读取多行输入,每行输入保存到字符串line中
var lines = line.split(' '); //根据空格将字符串line分隔开,保存到数组lines中
var a = parseInt(lines[0]); //数组lines中的每一项保存的是字符串形式的,要将其转换成整数
var b = parseInt(lines[1]);
print(a + b);
}
多行输入
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 1000)
2
1 5
10 20
let line_num=readline() //读取第一行(单行读取)
line_num=parseInt(line_num) //转换成数字
for(let i=0;i<line_num;i++){
line=readline() //单行读取
lines=line.split(' ') //分隔
a=parseInt(lines[0]) //转换成数字
b=parseInt(lines[1])
console.log(sum(a,b))
}