牛客前端大挑战51-61

本文介绍了11道JavaScript编程题目,包括乘法运算、改变上下文、对象属性批量修改、属性遍历、数字检测、重复字符检查、元音结尾判断、连续数字提取、格式校验、美元格式校验以及购物车功能实现。通过这些题目,提升JavaScript编程能力。
摘要由CSDN通过智能技术生成

51.乘法

描述

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

示例

输入:3, 0.0001
输出:0.0003

function multiply(a, b) {
   
    //parseFloat 解析一个字符串,并返回一个浮点数
    //toFixed 可以把Number四舍五入为指定小数位数的数字
    return parseFloat((a*b).toFixed(10))
}

52.改变上下文

描述

将函数 fn 的执行上下文改为 obj,返回 fn 执行后的值

示例

输入:
alterContext(function() {return this.greeting + ', ’ + this.name + ‘!’; }, {name: ‘Rebecca’, greeting: ‘Yo’ })
输出:Yo, Rebecca!

function alterContext(fn, obj) {
   
    //bind返回的是一个函数,因此需要立即执行
    return fn.bind(obj)()
}

53.批量改变对象的属性

描述

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

示例

输入:
var C = function(name) {this.name = name; return this;};
var obj1 = new C(‘Rebecca’);
alterObjects(C, ‘What’s up’); obj1.greeting;
输出:What’s up

注意读题

将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。 所有实例的某个属性都改变只需要改变这个构造函数的原型即可,即: constructor.prototype.gree

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

54.属性遍历

描述

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

示例

输入:
var C = function() {this.foo = ‘bar’; this.baz = ‘bim’;};
C.prototype.bop = ‘bip’;
iterate(new C());
输出:[“foo: bar”, “baz: bim”]

function iterate(obj) {
   
    //这里用keys或者getOwnPropertyNames都可
    return Object.keys(obj).map(function(key){
   
        return key+": "+obj[key];
    })
}

55.判断是否包含数字

描述

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

示例

输入:‘abc123’
输出:true

//方法一
function containsNumber(str) {
   
    for(var i=0;i<=10;i++){
   
        if(str.indexOf(i)!=-1){
   
            return true
        }
    }
    return false
}
//方法二
function containsNumber(str) {
   
    var reg=/\d/
    return reg.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值