js泡一泡
三水汪
解决是能力,担当才是王道。
展开
-
添加元素(数组开头)
题目描述在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], 10输出[10, 1, 2, 3, 4]unshit()向数组开头添加元素function prepend(arr, item) {var m = arr.slice();原创 2017-11-18 17:40:43 · 16525 阅读 · 1 评论 -
查找重复元素
题目描述找出数组 arr 中重复出现过的元素示例1输入[1, 2, 4, 4, 3, 3, 1, 5, 3]输出[1, 3, 4]function duplicates(arr) { var m = arr.reduce(function(allEle,curEle,index,arr){原创 2017-11-21 18:30:56 · 369 阅读 · 0 评论 -
移除数组中的元素(返回新数组)
怎莫说呢!这道题目看似简单,但是也有很多种处理方式,答案仍然不唯一。题目是这样的;移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组。输入:[1,2,3,4,2] ,2输出:[1,3,4]第一种解决方案:for循环push()进新的数组中(像这种循环遍历对数组无增删的也可以选用forEach)遇到与item不原创 2017-11-16 21:56:39 · 11713 阅读 · 0 评论 -
移除数组中的元素(操作原数组)
题目:移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回输入:[1,2,3,4,2] ,2输出:[1,3,4]使用splice()删除与item相同的值并把数组索引回退一个值(i--)function removeWithoutCopy(arr, item) { for原创 2017-11-16 22:06:24 · 657 阅读 · 0 评论 -
函数的上下文
题目描述将函数 fn 的执行上下文改为 obj 对象示例1输入function () {return this.greeting + ', ' + this.name + '!!!';}, {greeting: 'Hello', name: 'Rebecca'}输出Hello, Rebecca!!!刚开始我还想通过原创 2017-12-01 09:52:43 · 1033 阅读 · 0 评论 -
返回函数---(这个其实多个参的时候还是不太。。。。)
题目描述实现函数 functionFunction,调用之后满足如下条件:1、返回值为一个函数 f2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', '3、所有函数的参数数量为 1,且均为 String 类型示例1输入functionFunction('Hello')('world')输出原创 2017-12-01 13:15:40 · 242 阅读 · 0 评论 -
求二次方
题目描述为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4]输出[1, 4, 9, 16]Math.pow() 函数返回基数(base)的指数(exponent)次幂,即 baseexponent。function square(arr) {原创 2017-11-23 15:34:09 · 406 阅读 · 0 评论 -
闭包
先来看一个题目例子,我将在下一环节出闭包讲解。。题目描述实现函数 makeClosures,调用之后满足如下条件:1、返回一个函数数组 result,长度与 arr 相同2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同输入[1, 2, 3], function (x) { return x原创 2017-12-06 10:05:32 · 200 阅读 · 0 评论 -
函数传参(函数作为参数)
题目描述将数组 arr 中的元素作为调用函数 fn 的参数示例1输入function (greeting, name, punctuation) {return greeting + ', ' + name + (punctuation || '!');}, ['Hello', 'Ellie', '!']输出Hello, Ellie!原创 2017-11-29 14:35:15 · 1138 阅读 · 0 评论 -
查找元素【全部】位置
题目描述在数组 arr 中,查找值与 item 相等的元素出现的所有位置第一种::filter过滤每一个元素,找到相同则执行push,最后返回存放下标数组function findAllOccurrences(arr, target) { var m = []; arr.filter(function(ele,idx,arr){ retur原创 2017-11-27 10:05:17 · 745 阅读 · 0 评论 -
二次封装函数
题目描述已知函数 fn 执行需要 3 个参数。请实现函数 partial,调用之后满足如下条件:1、返回一个函数 result,该函数接受一个参数2、执行 result(str3) ,返回的结果与 fn(str1, str2, str3) 一致示例1输入var sayIt = function(greeting, name, punctuation) {原创 2017-12-06 10:41:58 · 718 阅读 · 0 评论 -
计数
题目描述统计数组 arr 中值等于 item 的元素出现的次数示例1输入[1, 2, 4, 4, 3, 4, 3], 4输出3function count(arr, item) { var o = arr.reduce(function(allEle,curValue,index,arr){原创 2017-11-20 15:57:09 · 219 阅读 · 0 评论 -
添加元素(任意位置)
题目描述在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], 'z', 2输出[1, 2, 'z', 3, 4]第一种:: 运用splice的第二个蚕食为0去添加元素的特性function insert(arr, item, i原创 2017-11-20 15:28:48 · 512 阅读 · 0 评论 -
apply提高数组找出最大最小值的方式(性能)
apply() 方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。注意:call()方法的作用和 apply() 方法类似,只有一个区别,就是 call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。apply 使用apply和内置函数聪明的apply用法允许你在某些本来需要原创 2017-11-29 15:17:59 · 483 阅读 · 0 评论 -
删除数组最后一个元素
题目要求:删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。输入:[1,2,3,4]输出:[1,2,3]当然首先想到的是pop(),删除数组最后一项改变数组长度。这是第0中解决方案你说行不行啊!function truncate(arr) { var m = arr.slice(); m.pop(原创 2017-11-18 16:58:55 · 128635 阅读 · 0 评论 -
添加元素(数组末端)
题目是这样的;在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组。输入:[1,2,3,4],10输出:[1,2,3,4,10]第一种:兼顾处理,可在函数内做判断(在输入参数item是数组时,可以做是否是数组兼容性判断)function append(arr, item) {var newArr=[item]; [原创 2017-11-17 21:55:09 · 2434 阅读 · 0 评论 -
删除数组第一个元素
题目描述删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4]输出[2, 3, 4]第一种::运用slice()的浅克隆去复制元素从第二个开始到最后一个function curtail(arr) {var m = arr.slice(1);原创 2017-11-19 11:24:08 · 95660 阅读 · 0 评论 -
数组合并
题目描述合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组示例1输入[1, 2, 3, 4], ['a', 'b', 'c', 1]输出[1, 2, 3, 4, 'a', 'b', 'c', 1]//利用concatfunction concat(arr1, arr2)原创 2017-11-19 11:42:34 · 609 阅读 · 0 评论 -
查找数组元素位置
题目原本是这样描述的:找出元素 item 在给定数组 arr 中的位置输出的数据要求是:如果数组中存在item,则输出在数组中的位置,否则输出-1输入:[1,2,3,4],3输出:2解决方案有以下三种:第一种:function indexOf(arr,item){return arr.indexOf(item);}是的,indexOf()方法原创 2017-11-14 23:49:31 · 708 阅读 · 0 评论 -
计时器
实现一个打点计时器,要求1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12、返回的对象中需要包含一个 cancel 方法,用于停止定时操作3、第一个数需要立即输出第一种::运用setInterval定时器每间隔100毫秒打印一次,需要满足start小于等于endfunction co原创 2017-11-29 10:09:01 · 245 阅读 · 0 评论 -
reduce在数组求和中第二个参数initialValue讨论
回调函数第一次执行时,accumulator 和currentValue的取值有两种情况:调用reduce时提供initialValue,accumulator取值为initialValue,currentValue取数组中的第一个值;没有提供 initialValue,accumulator取数组中的第一个值,currentValue取数组中的第二个值。注意:如果没有提供initialV原创 2017-11-15 11:13:48 · 2549 阅读 · 1 评论 -
数组求和
数组求和是这样描述的:计算给定数组 arr 中所有元素的总和输入的要求是这样的:数组中的元素均为Number类型实例:输入:[1,2,3,4]输出:10第一种解法:常规这道题目让我们上来就想到的是for循环对数组元素相加function sum(arr) { var s = 0; for (var i=arr.length-1;原创 2017-11-15 10:37:21 · 1589 阅读 · 0 评论 -
reduce计算数组中元素出现的次数
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];var countedNames = names.reduce(function (allNames, name) { console.log('allNames::'+allNames+";;name::"+name); if (name in allNames)原创 2017-11-15 12:57:36 · 1125 阅读 · 0 评论 -
流程控制
题目描述实现 fizzBuzz 函数,参数 num 与返回值的关系如下:1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz2、如果 num 能被 3 整除,返回字符串 fizz3、如果 num 能被 5 整除,返回字符串 buzz4、如果参数为空或者不是 Number 类型,返回 false5、其余情况,返回参数 num示例1原创 2017-11-29 14:14:33 · 259 阅读 · 1 评论 -
递归(求对象中无底洞值)
今天想到了运用递归求出,对象中嵌套对象的无底洞的值。。。function m(data){console.log('leixcng::',typeof data.a);if(typeof data.a == 'object'){ console.log(1000,data.a);return m(data.a);}else{原创 2017-11-28 14:10:00 · 251 阅读 · 0 评论