ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【整理】牛客网编程题-前端篇(简单难度)

2021-06-06 15:02:36  阅读:149  来源: 互联网

标签:function arr return 示例 前端 编程 牛客 解题 数组


(1)获取字符串的长度

题目描述:
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1,否则如果字符 Unicode 编码 > 255 则长度为 2
示例1
输入:‘hello world, 牛客’, false
输出:17
解题思路:

function strLength(s, bUnicode255For1) {
    let length = s.length;
    if (!bUnicode255For1) {
        for (let i in s) {
            if (s.charCodeAt(i)>255) {
                length++;
            }
        }
    }
    return length;
}

慎用 JS 中的 for (var index in items) 循环数组项
注意:这里foreach的index表示的是索引,而不是项
for循环语句还可以改为:for (var i=0;i<s.length;i++)

(2)段落标识

题目描述:
请将下面这句话以段落的形式展示在浏览器中——“牛客网是一个专注于程序员的学习和成长的专业平台。”
解题思路:

let p = document.createElement('p')
p.innerText = '牛客网是一个专注于程序员的学习和成长的专业平台。'

(3)查找数组元素位置

题目描述:
找出元素 item 在给定数组 arr 中的位置
示例1
输入:[ 1, 2, 3, 4 ], 3
输出:2
解题思路:

function indexOf(arr, item) {
    return arr.indexOf(item);
}

(4)移除数组中的元素

描述:
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4, 2], 2
输出:[1, 3, 4]
解题思路:

function remove(arr, item) {
    let newArray = [];
    for (let i=0;i<arr.length;i++) {
        if (arr[i] !== item) {
            newArray.push(arr[i]);
        }
    }
    return newArray;
}

(5)添加元素

描述:
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4], 10
输出:[1, 2, 3, 4, 10]
解题思路:

function append(arr, item) {
    let newArray = arr.slice(0);
    newArray.push(item);
    return newArray;
}

(6)添加元素

描述:
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
示例1
输入:[1, 2, 3, 4], ‘z’, 2
输出:[1, 2, ‘z’, 3, 4]
解题思路:

function insert(arr, item, index) {
    var newArray = arr.slice(0);
    newArray.splice(index, 0, item);
    return newArray;
}

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
语法:

arrayObject.splice(index,howmany,item1,.....,itemX)

(7)正确的函数定义

描述:
请修复给定的 js 代码中,函数定义存在的问题
示例1
输入:true
输出:a

function functions(flag) {
    if (flag) {
      function getValue() { return 'a'; }
    } else {
      function getValue() { return 'b'; }
    }
    return getValue();
}

解题思路:

function functions(flag) {
    function getValue() {
        if (flag) {
            return 'a';
        } else {
            return 'b';
        }
    }
    return getValue();
}

(8)返回函数

描述:
实现函数 functionFunction,调用之后满足如下条件:
1、返回值为一个函数 f
2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', ’
3、所有函数的参数数量为 1,且均为 String 类型
示例1
输入:functionFunction(‘Hello’)(‘world’)
输出:Hello, world
解题思路:

function functionFunction(str) {
    return f = function (str2) {
        return str + ', ' + str2;
    }
}

(9)使用apply调用函数

描述:
实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
示例1
输入:无
输出:无
解题思路:

function callIt(fn) {
    return fn.apply(this,[].slice.call(arguments,1));
}

[].slice.call(arguments, 1) 其含义相当于 arguments.slice(1)
但是由于arguments是类数组,实际上并不具有数组的方法,所以不能直接调用slice方法。
call方法可以指定slice函数执行时的this指针以及后面的参数
通过修改this指针的方式,让arguments继承array。然后arguments就可以使用数组中的方法

(10)二次封装函数

描述:
实现函数 partialUsingArguments,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result 之后,返回的结果与调用函数 fn 的结果一致
3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数
示例1
输入:无
输出:无
解题思路:

function partialUsingArguments(fn) {
    var args = [].slice.call(arguments,1);
    return result = function () {
        return fn.apply(this,args.concat([].slice.call(arguments)));
    }
}

(11)二进制转换

描述:
获取数字 num 二进制形式第 bit 位的值。注意:
1、bit 从 1 开始
2、返回 0 或 1
3、举例:2 的二进制为 10,第 1 位为 0,第 2 位为 1
示例1
输入:128, 8
输出:1
解题思路:

function valueAtBit(num, bit) {
    var snum = num.toString(2);
    var sbit = snum.charAt(snum.length-bit);
    return sbit;
}

(12)二进制转换

描述:
将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
示例1
输入:65
输出:01000001
解题思路:

function convertToBinary(num) {
    var snum = num.toString(2);
    while(snum.length<8) {
        snum = '0' + snum;
    }
    return snum;
}

(13)属性遍历

描述:
找出对象 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”]
解题思路:

function iterate(obj) {
    var ownPropertyArr = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            ownPropertyArr.push(key+': '+obj[key]);
        }
    }
    return ownPropertyArr;
}

(14)检查重复字符串

描述:
给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
示例1
输入:‘rattler’
输出:true
解题思路:

function containsRepeatingLetter(str) {
    var reg = /([a-zA-Z])\1/;
    return reg.test(str);
}

([a-zA-Z])是该表达式的第一个分组,\1是匹配第一个分组匹配到的内容,也就是\1引用了第一个()匹配到的内容。即与([a-zA-Z])匹配到的单词重复。
同理,如果是\2,就是匹配第二个()匹配到的内容。

(15)获取指定字符串

描述:
给定字符串 str,检查其是否包含 连续3个数字
1、如果包含,返回最先出现的 3 个数字的字符串
2、如果不包含,返回 false
示例1
输入:‘9876543’
输出:987
解题思路:

function captureThreeNumbers(str) {
    var n = str.match(/([0-9]){3}/g);
    if (n == null) {
        return false;
    } else {
        return n[0];
    }
}

match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

(16)判断是否符合指定格式

描述:
给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型
示例1
输入:‘800-555-1212’
输出:true
解题思路:

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

标签:function,arr,return,示例,前端,编程,牛客,解题,数组
来源: https://blog.csdn.net/chentanghui/article/details/117626809

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有