12
abc
以上两个参数可以通过以下代码读取:
let param1 = readline() // 读取 12
let param2 = readline() // 读取 abc
3
aa
bb
cc
可以通过以下代码读取:
while(count = readline()) {
for (var i=0; i<count; i++) {
// 这样就可以分别读取 aa bb cc,如有需要可以通过这个循环把它们放到数组中
var word = readline()
}
}
undefined
,如果读取的为undefined
,说明已经读取了所有入参while (1) {
var arr = readline()
if (arr == undefined) break // 通过break跳出循环
var nums = arr.split(' ')
var sum = 0
for (var i=1; i<nums.length; i++) {
sum += parseInt(nums[i])
}
console.log(sum)
}
输出有两种方法:print()
和console.log()
,两种均可
结束读取入参只需要使用break
跳出循环即可
while (1) {
var nums = readline()
if (nums == '0 0') break // 通过break跳出读取参数的循环
var numarr = nums.split(' ')
var a = parseInt(numarr[0])
var b = parseInt(numarr[1])
console.log(a + b)
}
split
函数一定要记得,如果分割符为空字符串或被分割的字符串中没有指定的分割符,则返回这个字符串本身,比如:'a b'.split('') // 'a b'
'a b'.split(',') // 'a b'
toLowerCase
和toUpperCase
'aJs4'.toLowerCase() // 'ajs4'
'aJs4'.toUpperCase() // 'AJS4'
for
吧,不要对字符串使用forEach
,否则会报错slice(start, end)
,substring(start, end)
,substr(start,length)
,其中slice
跟substring
效果一样,包含start,但是不包含end,slice
还可以用于数组,见如下示例代码:[1,2,3,4].slice(1, 3) // [2,3]
'abcd'.slice(0, 3) // 'abc'
'abcd'.substring(0, 3) // 'abc'
'abcdefgh'.substr(2, 3) // 'cde'
indexOf
函数,该函数同样可以作用于数组,如果没有找到,则返回-1'abcd'.indexOf('k') // -1
'abcd'.indexOf('bc') // 1
[1,2,3,4].indexOf(3) // 2
toString()
函数,用toString()
函数的使用,一定要使用括号将数字括起来;另外toString()
还有转进制的作用,可将将10进制的数字转成指定的进制的字符串2.toString() // 报错
(2).toString() // '2'
(2.3).toString() // '2.3'
(20.3).toString(16) // '14.4ccccccccccd'
(31).toString(16) // '1f'
'w'.toString(16) // 'w'
'' + 2 // '2'
'' + 2.3 // '2.3'
parseInt()
和parseFloat()
,parseInt可以传两个参数,第二个参数为可选,不传的话一般默认为10,代表进制,将指定进制的字符串转成10进制的数字parseInt('we') // NaN
// 从第一个数字字符串开始识别
parseInt('2we') // 2
// 这个有点特殊,碰到'0x'开头的数字会默认当成16进制的数字转换
parseInt('0xa') // 10
parseInt('21', 8) // 17
parseInt('21', 9) // 19
parseFloat('kkm') // NaN
parseFloat('3.4') // 3.4
// parseFloat无法进行进制转换
parseFloat('12.4c', 16) // 12.4
parseFloat('12.44.33') // 12.44
var str = "A";
str.charCodeAt(); // 65
var str1 = 'abc';
str1.charCodeAt(1); // 98
String.formCharCode(97); // 'a'
String.fromCharCode(100); // 'd'
几个常见的特殊ACSII码值:换行(10),回车(13),空格(32)
split()
函数将字符串转成字符的数组'ab3d'.split('') // ['a', 'b', '3', 'd']
'abc' > 'abb' // true
'abc' > 'ab' // true
// 所有大写字母的ASCII码都比小写字母小
'a' > 'C' // true
'6' > '5' // true
toFixed()
实现,通过四舍五入实现,不传值的话默认四舍五入保留整数;需要注意的是,该函数返回的值是字符串2.34.toFixed() // '2'
2.54.toFixed() // '3'
2.5455.toFixed(1) // '2.5'
// 控制精度向下取
Math.floor(15.7784514000 * 100)/100 //15.77
// 丢弃小数部分,取整数部分,相当于下取整,Math.floor();
parseInt(2.34) // 2
// 向上取整,小数只要存在,就整数部分+1
Math.ceil(0.3) // 1
// 四舍五入取整
Math.round(2.53) // 3
// 向下取整,小数直接去掉,小数部分无论多大,整数部分都不+1
Math.floor(2.89) // 2
var obj = {
a: 1,
b: 3,
d: 5
}
for (let key in obj) {
console.log(key + '---' + obj[key])
}
splice 语法
arrayObject.splice(index,howmany,item1,…,itemX)
入参
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 |
item1, …, itemX | 可选。向数组添加的新项目。 |
出参
类型 | 描述 |
---|---|
Array | 包含被删除项目的新数组,如果有的话。 |
注意:
splice() 方法会直接对数组进行修改。
[2,3,4,2].splice(1, 2) // 删除后数组变为[2,2]
[2,3,4,5].splice(2, 0, 'a') // 增加后的数组为 [2,3,'a',4,5]
let a = [1,2,4,'a','d']
a.join('') // '124ad'
a.join(',') // '1,2,4,a,d'
let a = [1,2,4,'a','d']
a.reverse() // [ 'd', 'a', 4, 2, 1 ]
reduce
函数的使用语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 |
---|---|
total | 必需。初始值, 或者上一次计算结束后的返回值。 |
currentValue | 必需。当前处理元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象 |
initialValue | 可选。传递给函数的初始值 |
// 求一个数组的和
var arr = [1,2,3,4]
var sum = arr.reduce(function(a,b){
return a+b
})
console.log(sum) // 10
start
为自定义的字符串,代表冒号后的循环)start:
for (var m=0; m<2; m++) {
for (var n=0; n<10; n++) {
if (n === 5) {
continue start
}
console.log(n)
}
}
function range(colArr) {
for (let m=0; m<colArr.length; m++) {
for (let n=0; n<colArr.length-1-m; n++) {
if (colArr[n+1] < colArr[n]) {
let temp = colArr[n]
colArr[n] = colArr[n+1]
colArr[n+1] = temp
}
}
}
}
function colZhizi(num) {
let colNum = parseInt(num)
let arr = []
for (let i=2; i<=Math.sqrt(colNum); i++) {
while (colNum%i === 0) {
arr.push(i)
colNum = colNum / i
}
}
if (colNum > 1) arr.push(colNum)
return arr
}
function delRe(arr) {
let reArr = []
for (let m=0; m<arr.length; m++) {
if(reArr.indexOf(arr[m]) < 0) reArr.push(arr[m])
}
return reArr
}
function delReAndRange(arr) {
let reArr = []
bbq:
for (let m=0; m<arr.length; m++) {
for (let n=0; n<reArr.length; n++) {
if (reArr[n] > arr[m]) {
reArr.splice(n, 0, arr[m])
continue bbq
}else if (reArr[n] === arr[m]) {
continue bbq
}
}
reArr.push(arr[m])
}
return reArr
}
// 对下面一组数进行去重和排序(从小到大)
var nums = [3,4,6,7,4,3,6,7,9,9,0,5,4,2,1,11,2,45,29]
let ret = []
for (let i=0; i<nums.length; i++) {
ret[nums[i]] = 1
}
let arr = []
for (let i=0; i<ret.length; i++) {
if (ret[i] === 1) arr.push(i)
}
console.log(arr) // [ 0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 29, 45 ]
function reverseStr(str) {
str = str.split('').reverse().join('')
return str;
}