같은 기능을 완성하고 다른 인코딩으로 사고하다
function currentTime() {
var d = new Date(),
str = '';
str += d.getFullYear() + '-';
str += (d.getMonth() + 1) > 10 ? (d.getMonth() + 1) : '0' + (d.getMonth() + 1) + '-';
str += (d.getDate() > 10 ? d.getDate() : '0' + d.getDate()) + ' ';
str += (d.getHours() > 10 ? d.getHours() : '0' + d.getHours()) + ':';
str += (d.getMinutes() > 10 ? d.getMinutes() : '0' + d.getMinutes()) + ':';
str += d.getSeconds() > 10 ? d.getSeconds() : '0' + d.getSeconds();
return str;
};
물론 이런 코드를 보고 나는 문제가 하나 있었다. 그는 0보다 작은 값을 처리하기 위해 많은 삼원 표현식을 사용했다.그래서 나는 그에게 매개 변수로 한 단락을 썼다.
function currentTime() {
var d = new Date();
var arr = ['FullYear', 'Month', 'Date', 'Hours', 'Minutes', 'Seconds'].map(function(v, index) {
var value = d['get' + v]();
value = index === 1 ? value + 1 : value;
return value < 10 ? '0' + value : value;
});
var arr1 = arr.slice(0, 3).join('-');
var arr2 = arr.slice(-3).join(':');
return arr1 + ' ' + arr2;
}
위의 이 코드는 주로 순환하는 사고방식을 첨가했다.이런 방법을 순환 중에 실행하게 하지만 이 코드는 항상 구분자가 너무 자연스럽지 않다고 느껴서 다음과 같이 바꾼다.
function currentTime() {
var d = new Date();
return ['FullYear', 'Month', 'Date', 'Hours', 'Minutes', 'Seconds'].map(function(v, i) {
var v = d['get' + v]();
v = i === 1 ? v + 1 : v; //
return (v < 10 ? '0' + v : v) + ('-- ::' [i] || '');
}).join('');
}
이렇게 하니 기분이 많이 좋아졌다.
물론 위에서 맵을 사용했는데, 아마도 오래된 브라우저에서는 지원되지 않을 것이다. 나는 고개를 돌려 어떻게 그의 코드를 최적화시킬 것인가를 생각했다.나는 또 이렇게 바꾸었다.
function currentTime() {
var d = new Date();
return [d.getFullYear(),
'-',
add0(d.getMonth() + 1),
'-',
add0(d.getDate()),
' ',
add0(d.getHours()),
':',
add0(d.getMinutes()),
':',
add0(d.getSeconds())
].join('');
function add0(n) {
return n < 10 ? '0' + n : n;
}
};
ok~ 이런 코드는 IE8을 호환하는 것도 비교적 잘 알 수 있을 거예요.서로 다른 방식으로 같은 기능을 실현하는 것도 즐거운 일입니다. 여러분도 다른 실현 방법이 있으면 댓글을 남겨주세요. 여러분도 의사소통을 할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.