js 알고리즘 초기 엿 보기 06 (알고리즘 모드 03 - 함수 식 프로 그래 밍)
//
var printArray = function (array) {
for (var i = 0; i < array.length; i++) {
console.log(array[i])
}
}
printArray([1,2,3,4,5]);
//
var forEach = function (array,action) {
for (var i = 0; i < array.length; i++) {
action(array[i])
}
}
var logItem = function (item) {
console.log(item)
}
forEach([2,3,4,5,6],logItem)
우 리 는 먼저 위의 코드 가 무엇 을 했 는 지 살 펴 보 자. "배열 을 옮 겨 다 니 고 배열 의 모든 항목 을 인쇄 하 자."명령 식 프로 그래 밍 에서 우 리 는 이 말 을 한 걸음 한 걸음 완성 했다.먼저 배열 을 옮 겨 다 니 고 모든 요 소 를 인쇄 합 니 다.그러면 우 리 는 함수 식 프로 그래 밍 을 살 펴 보 겠 습 니 다. 우 리 는 먼저 두 개의 함 수 를 설 명 했 습 니 다. 하 나 는 배열 요 소 를 옮 겨 다 니 는 foreach (이곳 의 action 매개 변 수 는 사실은 하나의 반전 함수) 이 고 하 나 는 모든 항목 을 인쇄 하 는 logItem 입 니 다.우 리 는 모든 단계 의 조작 이 필요 한 논 리 를 함수 로 구분 하고 마지막 에 함 수 를 호출 하여 연산 을 집행 한다.
ES6 가 생 긴 후에 우 리 는 함수 식 프로 그래 밍 패 러 다 임 으로 우리 의 코드 를 더욱 편리 하 게 작성 할 수 있 습 니 다. 다음은 예 를 들 어 보 겠 습 니 다.
//
// , minVal
// minVal , minVal array[i] , minVal array[i];
//
var findMinValInArray = function (array) {
var minVal = array[0];
for (var i = 1; i < array.length; i++) {
if(minVal > array[i]) {
minVal = array[i];
}
}
return minVal;
}
console.log(findMinValInArray([7,8,9,5,31,2]));
// , Math.min (...)
const _min = function (array) {
return Math.min(...array);
}
console.log(_min([5,6,9,3,1]));
// ES6 , 。
const min = arr => Math.min(...arr);
console.log(min([2,3,9,4,8]))
위의 코드 에서 Math. min 은 하나의 방법 으로 매개 변수 중의 최소 값 을 되 돌려 주 고 매개 변 수 는 무한 개 일 수 있 습 니 다.그럼 ES6 의 화살표 함수 와 확장 연산 자 (...) 도 있 습 니 다.여기에 상세 한 설명 을 하지 않 고 연결 주 소 를 첨부 하면 화살표 함수 와 확장 연산 자가 무엇 인지 더욱 상세 하 게 알 수 있 습 니 다.
그러면 우리 가 앞에서 배 운 배열 방법 을 어떻게 이용 하여 우리 의 코드 를 더욱 '함수 식' 으로 만 드 는 지 살 펴 보 자.
//
var daysOfWeek = [
{name:"Monday",value:1},
{name:"Tuesday",value:2},
{name:"Wednesday",value:7},
]
var daysOfWeekValues_ = [];
for (var i = 0; i < daysOfWeek.length; i++) {
daysOfWeekValues_.push(daysOfWeek[i].value);
}
//
var daysOfWeekValues = daysOfWeek.map(function (day) {
// day , map
return day.value;
})
console.log(daysOfWeekValues);
// filter 。
// :
//
var positiveNumbers_ = function (array) {
var positive = [];
for (var i = 0; i < array.length; i++) {
if(array[i] >= 0) {
positive.push(array[i]);
}
}
return positive;
}
console.log(positiveNumbers_([-1,2,1,-2]));
//
var positiveNumbers = function (array) {
return array.filter(function (num) {
return num >= 0;
})
}
console.log(positiveNumbers([1,2,-1,-2,-5]));
// reduce
//
var sumValues = function (array) {
var total = array[0];
for (var i = 1; i < array.length; i++) {
total += array[i];
}
return total;
}
console.log(sumValues([1,2,3,4,5]));
//
var sum_ = function (array) {
return array.reduce(function (a,b) {
return a + b;
})
}
console.log(sum_([1,2,3,4,5]))
// ES6
var sum = arr => arr.reduce((a,b) => a + b);
console.log(sum([1,2,3,4,5]))
위 에서 우 리 는 함수 식 프로 그래 밍 의 예 를 보 았 는데 코드 가 복잡 하지 않 아서 쉽게 이해 할 수 있다.그래서 자세 한 설명 을 안 했 어 요.그럼 마지막 재 미 있 는 예 를 보 겠 습 니 다.
//
var mergeArrays_ = function (arrays) {
var count = arrays.length,
newArray = [],
k = 0;
for (var i = 0; i < count; i++) {
for (var j = 0; j < arrays[i].length; j++) {
newArray[k++] = arrays[i][j];
}
}
return newArray;
}
console.log(mergeArrays_([[1,2,3],[4,5],[6]]));
//
var mergeArraysConcat = function (arrays) {
return arrays.reduce(function (p,n) {
return p.concat(n);
})
};
console.log(mergeArraysConcat([[1,2,3],[4,5],[6],[7]]))
//
const mergeArrays = (...arrays) => [].concat(...arrays);
console.log(mergeArrays([1,2,3],[4,5],[6],[7],[8]));
// 。 (...arrays)
console.log(...[[1,2,3],[4,5],[6],[7],[8]])//
//
여기까지 우리 함수 식 프로 그래 밍 의 간단 한 설명 은 끝 났 습 니 다. 위의 내용 은 사실 만 분 의 1 에 불과 합 니 다. 코드 의 작성 에 대해 다른 창문 을 열 수 있 기 를 바 랍 니 다. 사실은 함수 식 프로 그래 밍 은 우리 의 실제 작업 에서 도 매우 유용 합 니 다.여러분 들 이 진지 하 게 대하 고 공부 하 시 기 를 바 랍 니 다. 마지막 으로 함수 식 프로 그래 밍 을 배 울 수 있 는 인터넷 주 소 를 동봉 합 니 다.http://reactivex.io/learnrx/。이것 은 외국 의 연습 사이트 로 간단 한 영 어 를 볼 수만 있다 면 문제 가 없 을 것 이다.
마지막 으로 본인 의 수준 이 제한 되 어 있 기 때문에 능력 과 큰 신 은 아직도 차이 가 많 습 니 다. 만약 에 잘못 이 있 거나 불분명 한 점 이 있 으 면 여러분 께 서 아낌없이 가르침 을 주시 기 바 랍 니 다.대단히 감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.