English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript에서 일반적인 논리 문제와 해결 방법

1. 배열 arr에서 값이 item과 같은 요소가 나타나는 횟수를 계산

function count(arr, item) {
   var count = 0;
   arr.forEach(function(e){
     //e가 arr의 각 요소와 일치하면 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;
    }

2. 배열 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);
  }
}

3. 배열 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);
}

4. 함수 createModule를 완료하면 다음과 같은 요구사항을 충족해야 합니다:

     1、객체를 반환합니다

     2、객체의 greeting 속성 값은 str와 같습니다1، name 속성 값은 str와 같습니다2

     3、객체는 sayIt 메서드가 있으며, 이 메서드가 반환하는 문자열은 greeting 속성 값입니다. + ', ' +이름 속성 값

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 함수를 구현하여 호출한 후 다음 조건을 만족시킵니다:

      1fn을 반환하는 함수 a를 반환합니다,a의 length 속성 값은1즉, 명시적으로 a가 하나의 매개변수를 받는 것과 같습니다

      2a를 호출한 후, 반환된 함수 b의 length 속성 값은 1

      3b를 호출한 후, 반환된 함수 c의 length 속성 값은 1

      4c를 호출한 후, 호출된 fn의 반환 값과 일치하는 결과를 반환합니다

      5fn의 매개변수는 함수 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);
      };
    };
  };
}

6. 배열 요소 위치 출력

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);
}

7. 배열 합

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

8. 지정된 요소를 제거

  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에서 일반적인 논리 문제는 여기에 요약되었습니다. 모두가 배웠는지 모르겠습니다. 이 문서의 내용은 여러분의 학습이나 업무에 도움이 되길 바랍니다. 의문이 있으면 댓글을 달고 교류해 주세요. 감사합니다.呐喊 교본에 대한 여러분의 지지에 감사합니다.

당신이 좋아할 수 있는