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

作者:daisy 时间:2024-05-22 10:31:21 

一、统计数组 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中常见的逻辑题就总结到这了,不知道大家都学会了吗?本文的内容对大家的学习或者工作还是有一定帮助的,如果有疑问大家可以留言交流,谢谢大家对asp之家的支持。

标签:js,逻辑题
0
投稿

猜你喜欢

  • 跟我学习javascript的基本类型和引用类型

    2024-04-28 09:46:42
  • django定期执行任务(实例讲解)

    2022-12-13 20:43:35
  • 基于MySql的扩展功能生成全局ID

    2024-01-13 07:52:58
  • 网页设计的十要十不要

    2007-12-21 13:01:00
  • python实现壁纸批量下载代码实例

    2023-11-15 12:38:54
  • 浅谈keras中的目标函数和优化函数MSE用法

    2022-01-19 02:15:55
  • 书写高效的CSS - 漫谈CSS的渲染效率

    2008-07-13 14:20:00
  • Python第三方库的安装方法总结

    2022-09-23 12:14:46
  • python itchat给指定联系人发消息的方法

    2023-02-10 18:21:36
  • Python实现学生管理系统(面向对象版)

    2021-11-05 01:20:54
  • python使用正则表达式匹配txt特定字符串(有换行)

    2023-03-23 07:46:03
  • Oracle 数据库中创建合理的数据库索引

    2024-01-24 12:37:05
  • mysql创建外键报错的原因及解决(can't not create table)

    2024-01-15 11:57:44
  • Python实现字典按照value进行排序的方法分析

    2022-11-03 04:27:27
  • 掀起抛弃IE6的高潮吧

    2009-02-26 12:44:00
  • Python高级特性——详解多维数组切片(Slice)

    2023-01-20 17:04:13
  • python爬虫开发之PyQuery模块详细使用方法与实例全解

    2021-05-28 20:54:29
  • Pytorch中Tensor与各种图像格式的相互转化详解

    2023-05-23 01:46:54
  • GC与JS内存泄露

    2010-09-25 19:01:00
  • ASP编程中的常见问题

    2007-09-20 13:32:00
  • asp之家 网络编程 m.aspxhome.com