Javascript中常见的逻辑题和解决方法


Posted in Javascript onSeptember 17, 2016

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

function count(arr, item) {
   var count = 0;
   arr.forEach(function(e){
     //e为arr中的每一个元素,与item相等则count+1
     e == item ? count++ : 0;
   });
   return count;
 }

function count(arr, item) {
  return arr.filter(function(a){
    return (a==item);
  }).length
}

function count(arr, item) {
var res;
return (res = arr.toString().match(new RegExp("//b"+item+"//b","g")))?res.length:0;
}

function count(arr, item) {
      var count = 0;
      arr.map(function(a) {
        if(a === item) {
          count++;
        }
      });
      return count;
    }

二、为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组

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

function square(arr) {
  //声明一个新的数组存放结果
   var a = [];
   arr.forEach(function(e){
     //将arr中的每一个元素求平方后,加入到a数组中
     a.push(e*e);
   });
   return a;
 }

function square(arr) {
//复制一个arr数组
  var newarr = arr.slice(0);
  for (var i=0;i<newarr.length;i++){
    newarr[i]= newarr[i]* newarr[i];
  }
  return newarr;
}

function square(arr) {
  return arr.map(function(item){
    return Math.pow(item, 2);
  })
}

三、将数组 arr 中的元素作为调用函数 fn 的参数

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

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

四、完成函数 createModule,调用之后满足如下要求:

     1、返回一个对象

     2、对象的 greeting 属性值等于 str1,name 属性值等于 str2

     3、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ‘, ‘ +name属性值

function createModule(str1, str2) {
   var obj = {
     greeting : str1,
     name   : str2,
     sayIt  : function(){
       //两个属性前面都需要加上this
       return this.greeting+", "+this.name;
     }
   };
   return 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 CreateMod(){
    this.greeting = str1;
    this.name = str2;
  }
  CreateMod.prototype.sayIt = function(){
    return this.greeting + ', ' + this.name;
  }
  return new CreateMod();
}

五、已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:

      1、返回一个函数 a,a 的 length 属性值为1(即显式声明 a 接收一个参数)

      2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1

      3、调用 b之后,返回一个函数 c, c 的 length 属性值为 1

      4、调用 c 之后,返回的结果与调用 fn 的返回值一致

      5、fn的参数依次为函数 a, b, c 的调用参数

输入例子:

var fn = function (a, b, c) {return a + b + c}; curryIt(fn)(1)(2)(3);
function curryIt(fn) {
   //获取fn参数的数量
   var n = fn.length;
   //声明一个数组args
   var args = [];
   //返回一个匿名函数
   return function(arg){
     //将curryIt后面括号中的参数放入数组
     args.push(arg);
     //如果args中的参数个数小于fn函数的参数个数,
     //则执行arguments.callee(其作用是引用当前正在执行的函数,这里是返回的当前匿名函数)。
     //否则,返回fn的调用结果
     if(args.length < n){
      return arguments.callee;
     }else return fn.apply("",args);
   }
 }

function curryIt(fn) {
  return function a(xa){
    return function b(xb){
      return function c(xc){
        return fn.call(this,xa,xb,xc);
      };
    };
  };
}

六、数组中输出元素位置

function indexof(arr,item){
  for(var i = 0,len = arr.length;i<len;i++){
    var ite = arr[i];
    if(ite == item){
      console.log(ite == item);
      return i;
    }else{
      return -1;
    }
  }
}

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

七、数组求和

function sum(arr) {
  return eval(arr.join("+"));
};

八、删除给定元素

function remove(arr, item) {
    for(var i=0, m=arr.length, res=[]; i<m; i++){
      if(item === arr[i]) continue;
      else res.push(arr[i]);
    }
    return res;
  }

function remove(arr, item) {
  var newA=arr.slice(0);
  for(var i=newA.indexOf(item);i>-1;i=newA.indexOf(item)){
    newA.splice(i,1);
  }
  return newA;
}

总结

Javascript中常见的逻辑题就总结到这了,不知道大家都学会了吗?本文的内容对大家的学习或者工作还是有一定帮助的,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
ExtJS 2.0实用简明教程之应用ExtJS
Apr 29 Javascript
jquery.validate使用攻略 第二部
Jul 01 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
Nov 18 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
详解vue路由篇(动态路由、路由嵌套)
Jan 27 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
Javascript实现单选框效果
Dec 09 Javascript
vue实现按钮切换图片
Jan 20 Vue.js
js手动播放图片实现图片轮播效果
Sep 17 #Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 #Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 #Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
Sep 17 #Javascript
AngularJS中关于ng-class指令的几种实现方式详解
Sep 17 #Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 #Javascript
利用js编写响应式侧边栏
Sep 17 #Javascript
You might like
QueryPath PHP 中的jQuery
2010/04/11 PHP
yii操作session实例简介
2014/07/31 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
JS event使用方法详解
2008/04/28 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
委托书范文
2014/04/02 职场文书
计划生育宣传标语
2014/06/21 职场文书
5s标语大全
2014/06/23 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
客房服务员岗位职责
2015/02/09 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书