在James Padolsey的博客里看到一篇面试题。
- Replace the string
"The quick brown fox jumps over the lazy dog"
with the string"The1 quick2 brown3 fox4 jumps5 over6 the7 lazy8 dog9"
.
自己写了几种方案:
var
foo
=
"
The quick brown fox jumps over the lazy dog
"
;
var bar = " The1 quick2 brown3 fox4 jumps5 over6 the7 lazy8 dog9 " ;
function test(func){
var result = func(foo);
console.log(result === bar ? true : result);
}
function custom1(str){
var i = 0 ;
return str.replace( / \w+ / g, function (c){
return c + ++ i;
})
}
function custom2(str){
str = str.split( ' ' );
for ( var i = str.length; i -- ;){
str[i] += i + 1 ;
}
return str.join( ' ' );
}
function custom3(str){
var i = 0 ;
return str.replace( / (?=[\s]|$) / g, function (){
return ++ i;
})
}
test(custom1);
test(custom2);
test(custom3);
var bar = " The1 quick2 brown3 fox4 jumps5 over6 the7 lazy8 dog9 " ;
function test(func){
var result = func(foo);
console.log(result === bar ? true : result);
}
function custom1(str){
var i = 0 ;
return str.replace( / \w+ / g, function (c){
return c + ++ i;
})
}
function custom2(str){
str = str.split( ' ' );
for ( var i = str.length; i -- ;){
str[i] += i + 1 ;
}
return str.join( ' ' );
}
function custom3(str){
var i = 0 ;
return str.replace( / (?=[\s]|$) / g, function (){
return ++ i;
})
}
test(custom1);
test(custom2);
test(custom3);
但是没想到用Array的map方法,虽然这是javascript高版本才增加的。
"
The quick brown fox jumps over the lazy dog
"
.split(
'
'
).map(
function
(w,i){
return
w
+
(i
+
1
) }).join(
'
'
)