需要没事时候刷一刷?(牛客简单题目)
https://www.nowcoder.com/exam/oj?page=1&tab=%E5%89%8D%E7%AB%AF%E7%AF%87&topicId=260
1. 从大到小排序
将数组参数中的数字从大到小进行排序并返回。
b-a 大到小
function _sort(arr){
return arr.sort((a,b)=>b-a)
}
冒泡排序:
function _sort(arr){
for(let i = 0;i<arr.length, i++){
for(var j =0;j<arr.length - i -1 ;j++){
if(arr[j]<arr[j+1]){
let temp = arr[j];
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
return arr
}
2. 大写字符串
-
直接调用toUpperCase方法
-
构造一个空string , 遍历string后, 使用charCodeAt,获取ASCI码,
将判断为小写范围的, 转换为大写
(string[i].charCodeAt() >=97 && string[i].charCodeAt()<=122)
转大写 -32
String.fromCharCode===> 将ascii 码转换回来
如果本身就是大写, 直接拼接起来 -
最后返回输出的结果
function _touppercase(string) {
// 补全代码
return string.toUpperCase()
}
function _touppercase(string) {
// 补全代码
// abc===>ABC
// a 97---122
// A 65
// A-Z 97-122
let newString = ''
for(let i=0; i< string.length; i++ ){
// 如果是小写字母==> 小写转大写
if(string[i].charCodeAt() >=97 &&string[i].charCodeAt() <=122){
newString += String.fromCharCode(string[i].charCodeAt()-32)
}else{
newString += string[i]
}
}
return newString
}
3. 对象属性键名
_keys({name:‘nowcoder’,age:7}) -> [‘name’,‘age’]
function _keys(object) {
// 补全代码
return Object.keys(object)
}
function _keys(object) {
let arr = []
for(var key in object){
arr.push(key)
}
return arr
}
4. 对象数字/对象字符串
描述
请补全JavaScript函数,要求将数字参数转换为对象的形式返回。
示例:
- typeof number === ‘number’ -> typeof _numbertoobject(number) === ‘object’
function _numbertoobject(number) {
// 补全代码
return new Number(number)
}
请补全JavaScript函数,要求将字符串参数转换为对象的形式返回。
示例:
- typeof string === ‘string’ -> typeof _stringtoobject(string) === ‘object’
function _stringtoobject(string) {
// 补全代码
return new String(string)
}
5. 去除字符串两端空格
function _trim(string) {
// 补全代码
// 方法1 -----trim 方法, 去除字符串首尾两端空格
return string.trim()
// 方法2----replace方法. + 正则
return string.replace(/^\s*|\s*$/g,'');
// ^ 匹配输入的开始;$ 匹配输入的结束;\s 匹配一个空白字符;| 或运算(或匹配);
// * 匹配前一个表达式 0 次或多次;
}
6. 输出日期
function _date(number) {
// 补全代码
let date = new Date(number)
return date.getFullYear() + '-'+(date.getMonth()+1)+'-'+date.getDate()
}
靠实力写法
function _date(number){
//不要投机取巧,要靠自己的实力!
//1天=24小时=24*60分钟=24*60*60秒=24*60*60*1000毫秒
let msInDay=24*60*60*1000;//一天有多少毫秒
let days=Math.floor(number/msInDay);//这些毫秒等于多少天
//从计算机元年算起
let year=1970;
let month=1;
let date=1;
//循环:用天数计算月日
while(true){
//判断闰年,计算2月的天数
let february=year%4==0&&year%100!==0||year%400==0?29:28;
// 月份表 1 2 3 4 5 6 7 8 9 10 11 12
let daysInMonth=[31,february,31,30,31,30,31,31,30,31,30,31];
let currentDaysInMonth=daysInMonth[month-1];//获取当月的天数
//剩余天数够不够当月
if(days>currentDaysInMonth){
//如果够,就做减
days-=currentDaysInMonth;
month++;//增加月数
}else{
//否则就追加到日数
date+=days;
//到这时,就计算完成了
return `${year}-${month}-${date}`;
}
//当月数大于12时,就说明本年已完结
if(month>12){
month=1;//月数归1
year++;//年份增加
}
}
}
7. 数字取整
要求返回数字参数的整数部分。
-
分享一种方法
- 是按位取反运算符,两个 ~ 就是按位取反后再取反,这里相当于 Math.floor(),效率会要高一点
function _int(value) {
// 补全代码
return ~~value
}
8. 数组反转
请补全JavaScript函数,要求将参数数组反转之后返回。
return arr.reverse(array[i])
function _reverse(array) {
let arr = []
for(let i = 0;i<array.length;i++){
arr.unshift(array[i])
}
return arr
}
9. 数组转字符串
请补全JavaScript函数,要求将参数数组转换为字符串输出。
示例:
- _join([1,‘2’,3]) -> “123”
注意:只需考虑一维数组且数据类型为原始数据类型。
function _join(array) {
let str = ''
for(var i = 0;i<array.length; i++){
str += array[i]
}
return str
}
10.数组最大值
function _max(array) {
// 补全代码
let max = array[0]
for(let i =1; i<array.length;i++){
if(max<array[i]){
max = array[i]
}
}
return max
}
11. js-位置查找
请补全JavaScript函数,要求以数字的形式返回第一个参数数组中第二个参数所在的首个索引值。
注意:如果数组中不存在目标值,则返回-1。
返回第二个参数的索引值, 如果存在目标值…(返回索引, 如果不存在目标值…返回-1
function _indexof(array,value) {
for(var i =0;i< array.length;i++){
if(value === array[i]){
return i
}
}
return -1
}
12. 向下取整
请补全JavaScript函数,要求以数字的形式返回数字参数向下取整的结果。
function _floor(number) {
// 方法1 Math.floor()
// return Math.floor(number)
// 方法3 -------- split()
// let arr = number.toString().split('.')
// return arr[0]
// 方法4 ------- parseInt()
// return parseInt(number);
// 方法6 ---------- 评论区所见,不是很懂
// return ~~number;
}
_floor(2.56);