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 相关文章推荐
找到了一篇jQuery与Prototype并存的冲突的解决方法
Aug 29 Javascript
JMenuTab简单使用说明
Mar 13 Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
jQuery表单验证功能实例
Aug 28 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
Mar 08 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
vue element-ui实现动态面包屑导航
Dec 23 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
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
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
React Router基础使用
2017/01/17 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Python代码的打包与发布详解
2014/07/30 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python Pexpect模块的使用
2020/12/25 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
支教自我鉴定
2014/01/18 职场文书
人力资源总监工作说明
2014/03/03 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
杨善洲观后感
2015/06/04 职场文书
三国演义读书笔记
2015/06/25 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server