《牛客刷题》--2020年7月7日

4 篇文章 0 订阅
3 篇文章 0 订阅

字符转换的三种方法https://blog.csdn.net/bellediao/article/details/107189385

全局变量题表述

给定的 js 代码中存在全局变量,请修复。

function globals() {
    myObject = {
      name : 'Jory'
    };
    return myObject;
}

在Javascript语言中,声明变量使用的都是关键字var,如果不使用var而直接声明变量,则该变量为全局变量。

function globals() {
   // 在函数里面 必须加var  要不你就在全局定义
    //myObject = {
    var  myObject = {
      name : 'Jory'
    };
    return myObject;
}

属性遍历题目描述

找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序

示例1

输入

var C = function() {this.foo = 'bar'; this.baz = 'bim';}; 
C.prototype.bop = 'bip'; 
iterate(new C());

输出

["foo: bar", "baz: bim"]

可以使用for-in来遍历对象中的属性,hasOwnproperty方法能返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性,该属性必须为对象本身的属性。hasOwnproperty方法是检测属性是存在实列中,还是存在原型中。存在对象实列中返回true ,for-in循环时,返回的是所有能够通过对象访问的属性(可枚举的属性)

function iterate(obj) {
     var arr = [];
     //使用for-in遍历对象属性
     for(var key in obj){
         //判断key是否为对象本身的属性
         if(obj.hasOwnProperty(key)){
             //将属性和值按格式存入数组
             arr.push(key+": "+obj[key]);
         }
     }
     return arr;
 }

模块题目描述

完成函数 createModule,调用之后满足如下要求:
1、返回一个对象
2、对象的 greeting 属性值等于 str1, name 属性值等于 str2
3、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ' + name属性值。

//原型模式:
function createModule(str1, str2) {
    function Obj()
    {
        this.greeting = str1;
        this.name = str2;
    }
    Obj.prototype.sayIt = function(){return this.greeting + ", " + this.name;}
    return new Obj(); 
}
//构造函数模式:
function createModule(str1, str2) {
    function Obj()
    {
        this.greeting = str1;
        this.name = str2;
        this.sayIt = function(){return this.greeting + ", " + this.name;}
    }
    return new Obj();   
}
//创建对象模式:
function createModule(str1, str2) {
    function CreateObj()
    {
        obj = new Object;
        obj.greeting = str1;
        obj.name = str2;
        obj.sayIt = function(){return this.greeting + ", " + this.name;}
        return obj;
    }
    return CreateObj();   
}
//字面量模式:
function createModule(str1, str2) {
    var obj =
            {
                greeting : str1,
                name : str2,
                sayIt : function(){return this.greeting + ", " + this.name;}
            };
    return obj;   
}

 

判断是否含数组·题目描述

给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false

示例1

输入:'abc123'

输出:true

判断字符串中是否含有数字,可以用正则表达式。/\d/可以匹配字符串中的数字字符,用test方法可以检测。

function containsNumber(str) {
     var b = /\d/;
     return b.test(str);
 }

 

题目描述

统计数组 arr 中值等于 item 的元素出现的次数

示例1

输入:[1, 2, 4, 4, 3, 4, 3], 4

输出 : 3

        function count(arr, item) {
            var count = 0;
            arr.forEach(element => {
                element == item ? count++ : 0
            });
            return count;
        }

题目描述

求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题

示例

输入:3, 0.0001

输出:0.0003

计算两小数的小数点位数,然后相加得到保留的小数点位数,用tofixed函数即可.

function multiply(a, b) {
    var re = /\./;
    var aDec = a.toString().split('.')[1] || '';
    var bDec = b.toString().split('.')[1] || '';
    var fix = aDec.length  + bDec.length;
    return (a * b).toFixed(fix);
}

 a.toString().split('.')[1] || ''的解释:

参数a先转为字符串在以‘.’切割成数组可以得到两项,取小数点后面那项,如果是整数的话就给空,因为他的作用只是用来算小数点的位数

知识链接:

JavaScript toFixed() 方法:把 Number 四舍五入为指定小数位数的数字。

语法:NumberObject.toFixed(num)

实例:

        var num = new Number(12.33);
        console.log(num.toFixed(1))//=>12.3

 

题目描述

给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。

示例1

输入

var C = function(name) {this.name = name; return this;}; 
var obj1 = new C('Rebecca'); 
alterObjects(C, 'What\'s up'); obj1.greeting;

输出

What's up

这是原型链问题。访问一个对象的方法或者是属性,首先会在该对象中寻找,如果找到则返回,如果没找到,则在其原型链上面向上寻找,直至基原型,如还未找到,则返回undefined。将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量,只需要在constructor的原型上面添加greeting属性,并指定值。

function alterObjects(constructor, greeting) {
  constructor.prototype.greeting = greeting;
 }

 

 

 

题目描述

给定字符串 str,检查其是否以元音字母结尾
1、元音字母包括 a,e,i,o,u,以及对应的大写
2、包含返回 true,否则返回 false

首先确定元音集合[a,e,i,o,u],然后是以元音结尾,加上$,最后通配大小写,加上i。因此正则表达式为:/[a,e,i,o,u]$/i,最后用test方法去检测字符串str.

function endsWithVowel(str) {
  return /[a,e,i,o,u]$/i.test(str);
 }

 

题目描述

给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型

本题需要注意格式,开头^和结尾$必须加上来限定字符串,3个数可表示为\d{3},4个数则为\d{4},{n}表示前面内容出现的次数。正则表达式可写作/^\d{3}-\d{3}-\d{4}$/,有相同部分\d{3}-,因此也可写作/^(\d{3}-){2}\d{4}$/

function matchesPattern(str) {
    return/^(\d{3}-){2}\d{4}$/.test(str);
}

正则:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值