English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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에서 일반적인 논리 문제는 여기에 요약되었습니다. 모두가 배웠는지 모르겠습니다. 이 문서의 내용은 여러분의 학습이나 업무에 도움이 되길 바랍니다. 의문이 있으면 댓글을 달고 교류해 주세요. 감사합니다.呐喊 교본에 대한 여러분의 지지에 감사합니다.