js能力评级编程题

    xiaoxiao2025-05-23  7

    上次面试js的string的方法居然没想起来。

    怒刷几道小题。

    1.查找数组元素位置

    题目描述

    找出元素 item 在给定数组 arr 中的位置 输出描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1

    输入例子: indexOf([ 1, 2, 3, 4 ], 3)

    输出例子: 2

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

    2.数组求和

    题目描述

    计算给定数组 arr 中所有元素的总和 输入描述: 数组中的元素均为 Number 类型

    输入例子: sum([ 1, 2, 3, 4 ])

    输出例子: 10

    function sum(arr) { var su = 0; arr.forEach(function(value,index,arr){ su += value; }) return su; }

    3.移除数组中的元素

    题目描述

    移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 输入例子: remove([1, 2, 3, 4, 2], 2)

    输出例子: [1, 3, 4]

    function remove(arr, item) { return arr.filter(function(d){ return d !== item ; }) }

    使用filter数组元素过滤。

    这样会产生一个新的数组

    4.移除数组中的元素(原数组上删)

    题目描述

    移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 输入例子: removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)

    输出例子: [1, 3, 4]

    function removeWithoutCopy(arr, item) { for(var i = 0; i < arr.length ; i++){ if(arr[i] === item){ arr.splice(i,1); i--; } } return arr; }

    使用了arr.splice 在原数组上直接删除

    注意:如果在原数组上删除,i要动态改变。

    5.添加元素

    题目描述

    在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组 输入例子: append([1, 2, 3, 4], 10)

    输出例子: [1, 2, 3, 4, 10]

    function append(arr, item) { return [].concat(arr,item); }

    concat :返回新的数组

    6.删除数组最后一个元素

    题目描述

    删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组 输入例子: truncate([1, 2, 3, 4])

    输出例子: [1, 2, 3]

    function truncate(arr) { return arr.slice(0,arr.length-1); }

    slice。用于提取部分arr,返回新的数组。前闭后开。

    7.添加元素

    题目描述

    在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组 输入例子: prepend([1, 2, 3, 4], 10)

    输出例子: [10, 1, 2, 3, 4]

    function prepend(arr, item) { return [].concat(item,arr); }

    8.删除数组第一个元素

    题目描述

    删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组 输入例子: curtail([1, 2, 3, 4])

    输出例子: [2, 3, 4]

    function curtail(arr) { return arr.slice(1,arr.length); }

    9.数组合并

    题目描述

    合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组 输入例子: concat([1, 2, 3, 4], [‘a’, ‘b’, ‘c’, 1])

    输出例子: [1, 2, 3, 4, ‘a’, ‘b’, ‘c’, 1]

    function concat(arr1, arr2) { return [].concat(arr1,arr2); }

    10.添加元素

    题目描述

    在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组 输入例子: insert([1, 2, 3, 4], ‘z’, 2)

    输出例子: [1, 2, ‘z’, 3, 4]

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

    slice 实现arr复制到arr1

    11.计数

    题目描述

    统计数组 arr 中值等于 item 的元素出现的次数 输入例子: count([1, 2, 4, 4, 3, 4, 3], 4)

    输出例子: 3

    function count(arr, item) { var count = 0; arr.forEach(function(value,index,arr){ if(value === item)count++; }) return count; }

    12.查找重复元素

    题目描述

    找出数组 arr 中重复出现过的元素 输入例子: duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()

    输出例子: [1, 3, 4]

    function duplicates(arr) { var arr2 = []; var obj = {}; for(var i = 0,len = arr.length; i < len;i++){ if(!obj[arr[i]]){ obj[arr[i]] = 1; }else{ obj[arr[i]]++; if(obj[arr[i]] == 2){arr2.push(arr[i]);} } } return arr2; }

    13.求二次方

    题目描述

    为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组 输入例子: square([1, 2, 3, 4])

    输出例子: [1, 4, 9, 16]

    function square(arr) { return arr.map(function(data,index,arr){ return data*data; }) }

    14.查找元素位置

    题目描述

    在数组 arr 中,查找值与 item 相等的元素出现的所有位置 输入例子: findAllOccurrences(‘abcdefabc’.split(”), ‘a’).sort()

    输出例子: [0, 6]

    function findAllOccurrences(arr, target) { var arr2 = []; arr.forEach(function(data,index,arr){ if(data === target){ arr2.push(index); } }) return arr2; }

    15.计时器

    题目描述

    实现一个打点计时器,要求 1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作 3、第一个数需要立即输出

    function count(start, end) { console.log(start); var timer = setInterval(function(){ if(start < end){ console.log(++start); } },100); function cancel(){ clearInterval(timer); } return { cancel:cancel } }

    原来setinterval是每隔多少毫秒执行一次,并且不是立即执行的。

    settimeout也不是立即执行的。

    16.函数传参

    将数组 arr 中的元素作为调用函数 fn 的参数 输入例子:

    argsAsArray(function (greeting, name, punctuation) {return greeting + ‘, ’ + name + (punctuation || ‘!’);}, [‘Hello’, ‘Ellie’, ‘!’])

    输出例子:

    Hello, Ellie!

    function argsAsArray(fn, arr) { return fn.apply(this,arr); }

    17 闭包

    题目描述

    实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同 输入例子: var arr = [1, 2, 3]; var square = function (x) { return x * x; }; var funcs = makeClosures(arr, square); funcs1;

    输出例子: 4

    function makeClosures(arr, fn) { var result = []; for(var i = 0;i < arr.length ; i++){ result.push(function(i){ return function(){ return fn(arr[i]); } }(i)); } return result; }

    闭包如何才能保持变量呢?

    外部函数,构造成一个立即执行函数表达式,立即执行一下。 内部函数,获取到外部的传入参数。return出来。

    转载请注明原文地址: https://ju.6miu.com/read-1299172.html
    最新回复(0)